假设我有这样一个基类和派生类:
class Base {
public:
Base() { ... };
Base(int param) { ... };
};
class Derived : public Base {
public:
Derived() { ... };
Derived(int param) { ... };
Derived(int p1, int p2) { ... };
};
请注意,我
不
明确地调用
Base
的构造函数
Derived
的构造函数。也就是说,我
没有
写
Derived() : Base() { ... }
或
Derived(int param) : Base(param) { ... }
.
有没有
基础
在创建的实例时,默认情况下会调用的构造函数
衍生
?
如果是,是吗
Base(int param)
使用时接到电话
Derived(int param)
,或者
Base()
接到电话了吗?
换句话说,如果不指定要使用哪个构造函数,C++是否总是默认使用与派生类构造函数具有相同签名的基类构造函数?还是只使用基类的默认构造函数?
如果是前者,那么在派生类中使用的构造函数在基类中没有具有相同签名的匹配构造函数(例如
Derived(int p1, int p2)
?
请注意这个问题
没有
与任一类的成员变量的初始化相关。我故意不在伪代码中包含任何成员变量。它特别与基类上使用的构造函数有关
如果没有显式指定基构造函数
在派生类的构造函数中。