我知道如果 B 是从 A 派生的,那么当我创建 B 的新对象时,例如 b,A 的构造函数将首先调用。当我销毁对象 b 时,B 的析构函数将首先调用。那么我这里有个问题,如果Base类中有多个构造函数,会调用哪个构造函数?为什么?
我在下面写了一个测试程序,我猜它会调用Base类中的默认构造函数,但我不确定这是否只是巧合?
#include <iostream>
using namespace std;
class A{
public:
A(int i){cout<<"A con with param"<<endl;}
A(){cout<<"A con"<<endl;}
~A(){}
};
class B : public A
{
public:
B(int i){cout<<"B con with param"<<endl;}
B(){cout<<"B con"<<endl;}
~B(){}
};
int main()
{
B b(5);
return 0;
}
不知哪位大佬能告诉我这个问题的原因或建议解决这个问题?