多重継承時のコンストラクタ/デストラクタの呼び出し順序

C++独習中。現在、まったくのよちよち歩き。トムソンガゼルの生まれ立てベイビー状態ですが、多重継承時のコンストラクタ/デストラクタの呼び出し順序がどうなるのか確かめてみたりしました。

結果は以下の通り。

* DerivedA2
constructor of BaseA
constructor of DerivedA1
constructor of DerivedA2
destructor of DerivedA2
destructor of DerivedA1
destructor of BaseA

* DerivedAB
constructor of BaseA
constructor of BaseB
constructor of DerivedAB
destructor of DerivedAB
destructor of BaseB
destructor of BaseA

* DerivedABCD
constructor of BaseA
constructor of BaseB
constructor of DerivedAB
constructor of BaseC
constructor of BaseD
constructor of DerivedCD
constructor of DerivedABCD
destructor of DerivedABCD
destructor of DerivedCD
destructor of BaseD
destructor of BaseC
destructor of DerivedAB
destructor of BaseB
destructor of BaseA

多重継承したクラスをさらに多重継承した場合、コンストラクタの呼び出し順序は以下にようになります。(図中の左右の位置関係はクラス宣言における基本クラスの指定順序に対応しているとします)

デストラクタの呼び出し順序はちょうどこの逆になります。


独習C++

独習C++