假設我有以下兩個變量,都是靜態初始化的,而且它們以不同的編譯單元居住。是否有任何保證靜態初始化不會覆蓋顯式初始化的值?
Foo.cc
Foo foo;
Bar.cc
假設,通常bar
靜態foo
後初始化。
如果foo的構造函數被寫入寫bar
的價值,是有一個機會的bar
隨後的靜態初始化將覆蓋由foo?
,被寫的值,假設Bar
有第二個構造這需要一個字符串,併爲foo
的構造是這樣的:
Foo::Foo() {
bar = Bar("Hello World");
/// do other stuff to make a Foo
}
是否有任何機會,對於bar
靜態初始化將後運行並覆蓋由foo
的構造函數寫的bar
的值?
使用'const的酒吧巴;'也許?? –
當bar靜態初始化時,它不會檢查它是否已經被初始化,它只會做它的事情。所以是的,這有一個機會,它與{你的一天/一小時多麼不方便,你是多麼的醉心,你有多累,如果你現在接電話,你的家人會被逐出家園的可能性有多大} 。 – kfsone
[相關](http://stackoverflow.com/a/18140733/179910)。 –