コンストラクターを使用して派生クラス・オブジェクトを作成する場合、
そのオブジェクトは、次の順番で作成されます。
次の例は、このことを示しています。
#include <iostream> using namespace std; struct V { V() { cout << "V()" << endl; } }; struct V2 { V2() { cout << "V2()" << endl; } }; struct A { A() { cout << "A()" << endl; } }; struct B : virtual V { B() { cout << "B()" << endl; } }; struct C : B, virtual V2 { C() { cout << "C()" << endl; } }; struct D : C, virtual V { A obj_A; D() { cout << "D()" << endl; } }; int main() { D c; }
次に、上記の例の出力を示します。
V() V2() B() C() A() D()
上記の出力は、型 D のオブジェクトを作成するために、C++ ランタイムがコンストラクターを呼び出す順序をリストしています。
関連参照