オブジェクトの作成に関するちょっとした質問。次の 2 つのクラスがあるとします。
struct A{
A(){cout << "A() C-tor" << endl;}
~A(){cout << "~A() D-tor" << endl;}
};
struct B : public A{
B(){cout << "B() C-tor" << endl;}
~B(){cout << "~B() D-tor" << endl;}
A a;
};
そして主に次のインスタンスを作成しますB
:
int main(){
B b;
}
B
から派生しA
、 type のフィールドも持っていることに注意してくださいA
。
ルールを理解しようとしています。オブジェクトを構築するときは最初にその親コンストラクターを呼び出し、破棄するときはその逆であることを私は知っています。
フィールド (A a;
この場合) はどうですか? はいつ作成され、いつコンストラクターB
を呼び出しますか? A
初期化リストを定義していません。デフォルトのリストのようなものはありますか? そして、デフォルトのリストがない場合は? そして、破壊についての同じ質問。