为什么派生类对象在没有参数的情况下自动调用父类构造函数

Why derived class object automatically calls the parent class constructor with no argument?

本文关键字:情况下 调用 构造函数 父类 参数 派生 对象 为什么      更新时间:2023-10-16

为什么在C++中创建派生类对象时,它会自动调用父类构造函数而不带参数?

问题:

为什么在C++中,当创建派生类对象时,它会自动调用父类构造函数而不带参数?

答:因为标准是这么说的(重点是我的)。

12.6.2初始化基地和成员

8在非委托构造函数中,如果给定的非静态数据成员或基类不是由mem初始值设定项id指定的(包括由于构造函数没有ctor初始值设置项而没有mem初始项列表的情况),并且实体不是抽象类的虚拟基类(10.4),则

--如果实体是具有大括号或相等初始值设定项的非静态数据成员,则实体将按照8.5中的规定进行初始化
--否则,如果实体是变体成员(9.5),则不执行初始化
--否则,实体默认初始化(8.5)。