成員初始值設定項清單中的初始化順序
在C 中,建構子通常使用成員初始值設定項列表來初始化成員變數。然而,這些變數的初始化順序可能會令人困惑。
考慮以下建構子:
class A { public: OtherClass a_; AnotherClass b_; A(OtherClass o, string x, int y) : a_(o) , b_(a_, x, y) {} };
問題:
最初,假設變數依照初始化列表中列出的順序初始化:首先列出的順序進行初始化:首先列出是a_,然後是b_。然而,當發現變數以相反的順序初始化時,出現了問題。
問題:
如何控制初始化的順序以確保a_ 之前已初始化b_?
答案:
初始化的順序取決於類別中資料成員宣告的順序。在本例中,a_ 在 b_ 之前聲明,因此它將首先被初始化。
因此,為了確保所需的初始化順序,在類別定義中以正確的順序聲明資料成員至關重要。
以上是如何保證C成員初始化清單中的初始化順序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!