當讀的書編程:使用C++的原則和做法,第2版我沿着下面的語句來:爲什麼全局定義「const Date default_date(1970,1,1);」壞?
...你是什麼做的,如果你真的需要一個全局變量(或常量) 與一個複雜的初始化?一種可能的例子是,我們 想要一個默認值我們提供了一個圖書館 支持業務交易日期類型:
const Date default_date(1970,1,1); // the default date is January 1, 1970
我們怎麼會知道default_date從未使用過它是 初始化之前?基本上,我們無法知道,所以我們不應該寫 定義...
什麼讓我好奇這行代碼是其定義之前,使用全局變量的隱含的想法。作者(Bjarne Stroupstrup)在其初始化之前使用全局變量究竟意味着什麼?當然,也可以在其他地方聲明變量。但是沒有提到那種情況。
如果我得到正確的這個問題,只有在其他全局初始化引用這個default_data變量時纔會出現? – Sam
正確。所有全局對象將在調用'main()'之前被初始化。這是唯一的保證(除了在相同的翻譯單元中的相對初始化順序)。 –
如果您可以創建全局'constexpr',那麼您可以避免在初始化之前使用它。根據其設計和實施情況,「日期」可能或不可能。 –