如果我有一个基类:
class Base{
...
};
和派生类
class Derived : public Base{
...
}
这个派生类是否总是调用基类的默认构造函数?即不带参数的构造函数?例如,如果我为基类定义一个构造函数:
Base(int newValue);
但我没有定义默认构造函数(无参构造函数):
Base();
(我知道这只是声明,不是定义) 我得到一个错误,直到我定义了不带参数的默认构造函数。这是因为基类的默认构造函数是派生类调用的构造函数吗?
最佳答案
是的,默认情况下,会调用默认构造函数。您可以通过显式调用非默认构造函数来解决此问题:
class Derived : public Base{
Derived() : Base(5) {}
};
这将调用带参数的基类构造函数,您不再需要在基类中声明默认构造函数。
关于c++ - 派生类构造函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13446176/