为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我更喜欢使用成员初始化列表?

为什么我更喜欢使用成员初始化列表?

C++ C
侃侃尔雅 2019-05-30 16:08:26
为什么我更喜欢使用成员初始化列表?我倾向于在构造函数中使用成员初始化列表.但我早就忘了这背后的原因.。在构造函数中使用成员初始化列表吗?如果是,为什么?若否,原因为何?
查看完整描述

3 回答

?
达令说

TA贡献1821条经验 获得超6个赞

除了上面提到的性能原因之外,如果您的类存储对作为构造函数参数传递的对象的引用,或者您的类有Const变量,那么除了使用初始化程序列表之外,您别无选择。


查看完整回答
反对 回复 2019-05-30
?
www说

TA贡献1775条经验 获得超8个赞

  1. 基类初始化

这里没有提到的构造函数初始化程序列表使用的一个重要原因是基类的初始化。

根据构造的顺序,基类应该在子类之前构造。如果没有构造函数初始化程序列表,这是可能的,如果您的基类具有默认构造函数,该构造函数将在输入子类的构造函数之前调用。

但是,如果基类只有参数化构造函数,则必须使用构造函数初始化程序列表来确保基类在子类之前被初始化。

  1. 只具有参数化构造函数的子对象的初始化

  2. 效率

使用构造函数初始化程序列表,可以将数据成员初始化为代码中需要的状态,而不是首先将其初始化为默认状态&然后将其状态更改为代码中所需的状态。

  1. 初始化非静态Const数据成员

如果类中的非静态Const数据成员具有默认构造函数&不使用构造函数初始化程序列表,则无法将它们初始化到预期状态,因为它们将被初始化为默认状态。

  1. 引用数据成员的初始化

当编译器进入构造函数时,引用数据成员必须被初始化,因为引用不能在以后声明和初始化。这只有在构造函数初始化程序列表中才有可能。


查看完整回答
反对 回复 2019-05-30
  • 3 回答
  • 0 关注
  • 529 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信