非靜態資料成員的初始化順序
C 中,初始化物件時,非靜態資料成員初始化的順序是一個值得關注的問題。要理解這個順序,請務必參考 C 標準的相關部分。
根據 C 標準 12.6.2,非靜態資料成員會依照它們在類別定義中出現的順序進行初始化。這與成員初始值設定項清單在類別主體中出現的順序無關。
考慮以下範例:
class A {}; class B {}; class X { A a; B b; };
在類別 X 中,初始化的順序是 A 後跟 B這是因為在類別定義中 A 是在 B 之前聲明的。建構函數中成員初始值設定項目清單的順序是否不同並不重要。
此初始化順序可確保基底類別和成員子物件以與初始化相反的順序銷毀。因此,在上例中,B 將先於 A 被銷毀。
以上是C如何初始化非靜態資料成員?的詳細內容。更多資訊請關注PHP中文網其他相關文章!