是否有必要从子类构造函数中调用没有参数的父构造函数?
如果我有课程 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
?
答案 0 :(得分:1)
即使我没有B的对象,初始化B的对象时也会调用A的构造函数吗?B():A(){}并且值设置为100?
是的
就像成员一样,如果基础子对象没有初始化程序,则它将被默认初始化。默认初始化A
调用用户声明的构造函数。
您甚至不需要声明B
的构造器。隐式生成的代码执行相同的操作:
class B : public A {};