B が A から派生している場合、B の新しいオブジェクト (たとえば b) を作成すると、A のコンストラクターが最初に呼び出されることがわかっています。オブジェクト b を破棄すると、B のデストラクタが最初に呼び出されます。次に、ここで質問があります。Base クラスに複数のコンストラクターがある場合、どのコンストラクターが呼び出されますか? なぜ?
以下に 1 つのテスト プログラムを作成しました。これは 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;
}
この問題を解決するための理由やアドバイスを私に教えてくれる上司はいますか?