Al igual que en la sección anterior, en una clase derivada, la clase derivada no puede absorber el destructor .
El punto clave es que todos deben tener claro el orden de llamada de los destructores de las clases derivadas y las clases base. El orden de llamada de los destructores es completamente opuesto al de los constructores. Podemos generar mensajes en el destructor de clase derivada y en el destructor de clase base. y observe la secuencia de llamadas:
/************************************//Des: Demostración del tutorial de C++//Autor: Huang/ /Copyright:www.dotcpp.com//Fecha:2017/11/15********************************* * *******/#include<iostream>usingnamespacestd;classClock{private:intH;intM;intS;public:Clock(){cout<<¡Se llama al constructor del reloj!<<endl;}~Clock(){cout < <Destructor del reloj llamado!<<endl;}};classAlarmClock:publicClock{private:intAH;intAM;public:AlarmClock(){cout<<Constructor del despertador llamado!<<endl;}~AlarmClock(){cout<<AlarmClock ' sDestructorCalled!<<endl;}};intmain(){AlarmClockA;return0;}
Ejecutando captura de pantalla:
Como puede ver, definir una clase derivada AlarmClock generará primero la clase base, mientras que el orden de destrucción se invierte.
Secuencia de llamada del constructor: clase base -> clase derivada
Secuencia de llamada del destructor: clase derivada -> clase base
Pruébelo usted mismo.