Comme dans la section précédente, dans une classe dérivée, le destructeur ne peut pas être absorbé par la classe dérivée.
Le point clé est que tout le monde doit être clair sur l'ordre d'appel des destructeurs des classes dérivées et des classes de base. L'ordre d'appel des destructeurs est complètement opposé à celui des constructeurs. Nous pouvons afficher un message dans le destructeur de classe dérivée et le destructeur de classe de base. et observez la séquence d'appel :
/************************************//Des : Démo du tutoriel C++//Auteur : Huang/ /Droit d'auteur : www.dotcpp.com//Date : 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;}
Capture d'écran en cours d'exécution :
Comme vous pouvez le voir, définir une classe dérivée AlarmClock générera d'abord la classe de base, tandis que l'ordre de destruction sera inversé.
Séquence d'appel du constructeur : classe de base -> classe dérivée
Séquence d'appel du destructeur : classe dérivée -> classe de base
S'il vous plaît, essayez-le vous-même.