Dotcpp  >  编程教程  >  C++继承与派生  >  C++派生类的析构函数实例详解

C++派生类的析构函数实例详解

点击打开在线编译器,边学边练

同上一节一样,在派生类中,析构函数也无法被派生类吸收。


重点大家需要清楚派生类和基类的析构函数的调用顺序,析构函数的调用顺序与构造函数则完全相反,我们可以在派生类析构函数和基类析构函数中输出一条信息,观察调用顺序:

/**************************************
//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;
}


运行截图:

C++派生类的析构函数


大家可以看到定义一个派生类AlarmClock会先产生基类,同时析构顺序却是相反的。


构造函数调用顺序:基类->派生类

析构函数调用顺序:派生类->基类


请大家亲自上机实验。



本文固定URL:https://www.dotcpp.com/course/77

C++教程
第一章 C++入门
第二章 C++表达式和控制语句
第三章 C++函数调用与重载、内联
第四章 C++类和对象
第五章 C++继承与派生
第六章 C++多态性
第七章 C++异常处理
第八章 C++文件操作
Dotcpp在线编译      (登录可减少运行等待时间)