在构造函数中初始化字段:初始化器列表和构造函数主体之间的差异
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