[英]In static member variable initializer why is static member function (not the global one) called?
以下程序的輸出應該是什么?
#include<iostream>
int foo()
{
return 10;
}
struct foobar
{
static int x;
static int foo()
{
return 11;
}
};
int foobar::x = foo();
int main()
{
std::cout<<foobar::x<<endl;
}
我已經運行了該程序,但得到了答案11
,但我認為正確的答案應該是10
。 我不知道為什么foo()
在int foobar::x = foo();
應該是靜態功能,請幫我理解一下。 關於使用靜態函數的更多示例將是優選的!
因為初始化表達式在struct foobar
的范圍內,所以這里將調用foobar::foo()
。
從標准的$9.4.2/2 Static data members [class.static.data]
:
靜態數據成員定義中的初始化表達式在其類的范圍內(3.3.7)。 例:
class process { static process* run_chain; static process* running; }; process* process::running = get_main(); process* process::run_chain = running;
類
process
的靜態數據成員run_chain
在全局范圍內定義; 符號process::run_chain
指定該構件run_chain
是類的一個成員process
中類的范圍和process
。 在靜態數據成員定義中,初始化表達式表示running
類process
的靜態數據成員。 - 末端的例子]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.