在構造函數中初始化字段:初始化器列表和構造函數主體之間的差異
thing(int _foo,int _bar):成員1(_foo)(_foo),成員2(_bar)listerisor constructor在構造體主體執行之前的字段直接初始化。由於其簡潔的語法和清晰度,此方法通常是首選的。 thing(int _foo,int int _bar){ 成員1 = _foo; member2 = _bar; } 構造函數主體使用分配語句來初始化功能主體內的字段。 This method is less common, as it requires more lines of code and can be prone to errors if the assignment statements are not executed in the desired order.
Key DifferencesThing(int _foo, int _bar): member1(_foo), member2(_bar) {}When using the initializer list, non-POD fields that lack default constructors will not be initialized, potentially leading不確定的行為。相比之下,如果未提供明確的分配,則構造函數主體將字段初始化為默認值。
初始化順序:
初始化器列表在構造主體執行之前初始化字段。這可以確保以正確的順序初始化字段,即使構造函數主體中的分配語句的順序更改。 [&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&的錯誤列表有助於不正確,有助於防止錯誤分配語句引起的錯誤。例如,如果一個字段在構造函數正文中意外初始初始初始化,則初始化器列表將引起錯誤。 [&& && && && && && && && && && && && && && && && && && risiationer列表通常更有效,因為它直接初始化了字段,而無需執行構建體的主體。初始化器列表和構造函數可以在C構造函數中初始化字段,因此,由於其清晰度,安全性和性能優勢,初始化器列表通常是優選的。它確保以正確的順序初始化字段,並防止構造體主體中的潛在錯誤。免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3