C 中靜態類別成員初始化的時序 確定 C 中靜態類別成員何時初始化可能是一件複雜的事情。但是,有一些假設可以指導開發人員理解此類初始化的時間。 C 標準(3.6.2) 提供了兩個關於靜態初始化的關鍵保證: 有序初始化: 在同一翻譯單元(通常是.cpp 檔案)中定義的具有靜態儲存持續時間的物件會依照它們的順序進行初始化定義,而不是它們的宣告。 使用前初始化:翻譯單元中物件的靜態初始化保證在使用該單元中的任何物件或函數之前完成。 雖然這些保證建立了一個總體框架,但值得注意的是即: 單元內排序:單一翻譯單元中定義的物件初始化的確切順序取決於實作。 Inter -unit Ordering: 不同翻譯單元中定義的物件的初始化順序不是由標準。 但是,根據經驗,如果沒有靜態初始化器依賴其他靜態初始化器,那麼存取靜態成員不應引起任何有關初始化順序的問題。