前のセクションと同様に、派生クラスでは、デストラクターを派生クラスに吸収することはできません。
重要な点は、派生クラスと基底クラスのデストラクターの呼び出し順序を明確にする必要があるということです。デストラクターの呼び出し順序は、コンストラクターの呼び出し順序とはまったく逆です。派生クラスのデストラクターと基底クラスのデストラクターでは、メッセージを出力できます。そして、呼び出しシーケンスを観察します。
/************************************//デス: C++ チュートリアル デモ//作成者: Huang/ /著作権:www.dotcpp.com//日付:2017/11/15******************************** * *******/#include<iostream>usingnamespacestd;classClock{private:intH;intM;intS;public:Clock(){cout<<Clock'sConstructorCalled!<<endl;}~Clock(){cout < <Clock'sDestructorCalled!<<endl;}};classAlarmClock:publicClock{private:intAH;intAM;public:AlarmClock(){cout<<AlarmClock'sConstructorCalled!<<endl;}~AlarmClock(){cout<<AlarmClock ' sDestructorCalled!<<endl;}};intmain(){AlarmClockA;return0;}
実行中のスクリーンショット:
ご覧のとおり、派生クラス AlarmClock を定義すると、最初に基本クラスが生成され、破棄順序は逆になります。
コンストラクターの呼び出し順序: 基本クラス -> 派生クラス
デストラクター呼び出しシーケンス: 派生クラス -> 基底クラス
ぜひ試してみてください。