Как и в предыдущем разделе, в производном классе деструктор не может быть поглощен производным классом.
Ключевой момент заключается в том, что каждый должен четко понимать порядок вызова деструкторов производных классов и базовых классов. Порядок вызова деструкторов полностью противоположен порядку вызова конструкторов. Мы можем вывести сообщение в деструкторе производного класса и деструкторе базового класса. и соблюдайте последовательность вызова:
/************************************//Des: Демо-учебник по C++//Автор: Хуанг/ /Авторское право:www.dotcpp.com//Дата:15.11.2017********************************* * *******/#include<iostream>usingnamespacestd;classClock{private:intH;intM;intS;public:Clock(){cout<<Clock'sConstructorCal светодиод!<<endl;}~Clock(){cout<<Clock'sDestructorCalled!<<endl;}};classAlarmClock:publicClock{private:intAH;intAM;public:AlarmClock(){co ut<<AlarmClock'sConstructorCalled!<<endl;}~AlarmClock(){cout<<AlarmClock'sDestructorCalled!<<endl;}};intmain(){AlarmClockA;return0;}
Скриншот запуска:
Как видите, определение производного класса AlarmClock сначала сгенерирует базовый класс, а порядок уничтожения будет обратным.
Последовательность вызова конструктора: базовый класс -> производный класс
Последовательность вызова деструктора: производный класс -> базовый класс
Пожалуйста, попробуйте сами.