同上一节一样,在派生类中,析构函数也无法被派生类吸收。
重点大家需要清楚派生类和基类的析构函数的调用顺序,析构函数的调用顺序与构造函数则完全相反,我们可以在派生类析构函数和基类析构函数中输出一条信息,观察调用顺序:
/**************************************//Des:C++教程demo//Author:Huang//Copyright: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;}
运行截图:
大家可以看到定义一个派生类AlarmClock会先产生基类,同时析构顺序却是相反的。
构造函数调用顺序:基类->派生类
析构函数调用顺序:派生类->基类
请大家亲自上机实验。