【问题标题】:Why derived class object automatically calls the parent class constructor with no argument?为什么派生类对象不带参数自动调用父类构造函数?
【发布时间】:2016-03-08 08:57:42
【问题描述】:

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

【问题讨论】:

  • 您是否在派生类中指定了一个构造函数?如果不是,这就是语言的工作方式。你应该发一个minimal reproducible example
  • 它完全调用了您指示派生类构造函数使用的构造函数。默认情况下,这是默认构造函数。
  • 您希望调用哪个父构造函数?

标签: c++


【解决方案1】:

问题:

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

答案:因为标准是这样说的(强调我的)。

12.6.2 初始化基和成员

8 在非委托构造函数中,如果给定的非静态数据成员或基类不是由 mem-initializer-id 指定的(包括没有 mem-initializer-list 因为构造函数没有ctor-initializer)并且实体不是抽象类(10.4)的虚拟基类,那么

——如果实体是具有brace-or-equal-initializer的非静态数据成员,实体按照8.5中的规定进行初始化;
— 否则,如果实体是变体成员 (9.5),则不执行初始化;
— 否则,实体默认初始化 (8.5)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-28
    • 2020-07-02
    • 1970-01-01
    • 2016-07-19
    • 2015-07-18
    • 2023-03-10
    • 2012-11-06
    • 2022-07-01
    相关资源
    最近更新 更多