全局變量按照出現在翻譯模塊中的順序進行初始化,並且在未指定的不同翻譯模塊(所謂的「靜態初始化順序失敗」)中初始化變量的相對順序。名稱空間是否會影響C++中的初始化順序?
名稱空間對此有影響嗎?例如,如果我有這樣的代碼:
//first.cpp
int first;
int second;
這會對相比,這段代碼初始化順序有什麼區別:
//second.cpp
namespace {
int first;
}
int second;
是否存在情況下,把一個全局對象到一個命名空間會影響初始化順序?
請注意,C++標準定義了全局名稱只是出現在全局範圍([basic.scope.namespace]/3)中的名稱。所以就C++而言,在second.cpp中,「first」不是全局的。顯然,對於所有實際目的而言,與所有編程語言中使用的「全局變量」和特別可變的「全局變量」是PITA一起使用的,它是一個「全局」變量。 –