2015-04-23 175 views
1

1)在調用main()之前,類的靜態數據成員是否總是被初始化是真的?C++靜態數據成員初始化

2)如果類初始化代碼的靜態數據成員使用其他翻譯單元的全局靜態變量,是否可以發生「靜態初始化順序失敗」?

我在哪裏可以閱讀更多關於它的內容?我無法在2003年的C++標準中找到答案。

非常感謝。

+0

https://isocpp.org/wiki/faq/ctors#static-init-order – senfen

回答

1

1)在調用main()之前,類的靜態數據成員是否總是被初始化是真的?

是的,他們總是會在程序開始執行之前被初始化。

2)如果類初始化代碼的靜態數據成員使用其他翻譯單元的全局靜態變量,是否可以發生「靜態初始化順序失敗」?

是的,與此同時,它也發生在main()執行之前初始化的其他任何事情。

1

是的兩個答案。

請參閱https://isocpp.org/wiki/faq/ctors#static-init-order以便對其進行很好的描述。

+0

我讀過它,但它只是關於靜態對象,而不是類的靜態數據成員。是不是在這種意義上,靜態全局對象和靜態全局變量之間沒有區別? –

+0

類的靜態成員不過是頂部帶有一些語法糖的常規靜態對象(例如訪問說明符,名稱可見性)。但那只是在編譯期間。在運行時,與其他靜態對象沒有區別。 – Daniel