是否有必要从子类构造函数调用不带任何参数的父构造函数?

时间:2019-03-29 13:46:19

标签: c++ inheritance constructor

是否有必要从子类构造函数中调用没有参数的父构造函数

如果我有课程 A

class A {
public:
    A() : value(100) { }
    int get_value() { return value; }
private:
    int value;
};

以及来自 A 的班级 B

class B : public A {
public:
    B() : A() {}
};

初始化 B 的对象时,即使我没有B() : A() {}value集,也会调用 A 的构造函数到100

1 个答案:

答案 0 :(得分:1)

  

即使我没有B的对象,初始化B的对象时也会调用A的构造函数吗?B():A(){}并且值设置为100?

是的

就像成员一样,如果基础子对象没有初始化程序,则它将被默认初始化。默认初始化A调用用户声明的构造函数。

您甚至不需要声明B的构造器。隐式生成的代码执行相同的操作:

class B : public A {};