同上一节一样,在派生类中,析构函数也无法被派生类吸收。
重点大家需要清楚派生类和基类的析构函数的调用顺序,析构函数的调用顺序与构造函数则完全相反,我们可以在派生类析构函数和基类析构函数中输出一条信息,观察调用顺序:
/**************************************
//Des:C++教程demo
//Author:Huang
//Copyright:www.dotcpp.com
//Date:2017/11/15
**************************************/
#include<iostream>
using namespace std;
class Clock
{
private:
int H;
int M;
int S;
public:
Clock()
{
cout<<"Clock's Constructor Called!"<<endl;
}
~Clock()
{
cout<<"Clock's Destructor Called!"<<endl;
}
};
class AlarmClock:public Clock
{
private:
int AH;
int AM;
public:
AlarmClock()
{
cout<<"AlarmClock's Constructor Called!"<<endl;
}
~AlarmClock()
{
cout<<"AlarmClock's Destructor Called!"<<endl;
}
};
int main()
{
AlarmClock A;
return 0;
}运行截图:

大家可以看到定义一个派生类AlarmClock会先产生基类,同时析构顺序却是相反的。
构造函数调用顺序:基类->派生类
析构函数调用顺序:派生类->基类
请大家亲自上机实验。
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程