關於來自Scot Meyers的書籍「Effective C++」,以及第4項:非本地靜態對象可以在使用之前未初始化(在本例中靜態意味着「全局「,靜態的生活)。如果將其替換爲在返回對其引用的函數內部創建的local-static
對象,則該對象在使用前確定已初始化。C++ - 非本地靜態對象vs本地靜態對象
我總是有一個帶有常量的文件。我在.hpp文件中聲明extern const int a;
並在.cpp文件中定義它。但是,那麼同樣的事情會發生嗎? a
可以是未初始化的。或不?相同的規則是否適用於內置類型?
全局範圍內的變量*始終*初始化。即使它們在定義時沒有明確的初始化,系統也會[*初始化*](http://en.cppreference.com/w/cpp/language/zero_initialization)。無論如何,'const'變量必須被明確地初始化。 –
你可能想看看http://stackoverflow.com/questions/1005685/c-static-initialization-order –
嘿傢伙,謝謝你!據我所見,初始化內置類型的全局對象總是由編譯器處理,不必介意它們是本地還是非本地... – Dusan