广州C/C++培训
达内广州岗顶中心

18087159764

热门课程

广州C++培训机构浅谈C++派生类的析构函数

  • 时间:2016-09-28
  • 发布:广州C++培训
  • 来源:C语言论坛

从广州达内C++培训班得知,和构造函数类似,析构函数也是不能被继承的。

创建派生类对象时,构造函数的调用顺序和继承顺序相同,先执行基类构造函数,然后再执行派生类的构造函数。但是对于析构函数,调用顺序恰好相反,即先执行派生类的析构函数,然后再执行基类的析构函数。

请看下面的例子:

  #include <iostream>
    using namespace std;
    class A{
    public:
        A(){cout<<"A constructor"<<endl;}
        ~A(){cout<<"A destructor"<<endl;}
    };
    class B: public A{
    public:
        B(){cout<<"B constructor"<<endl;}
        ~B(){cout<<"B destructor"<<endl;}
    };
    class C: public B{
    public:
        C(){cout<<"C constructor"<<endl;}
        ~C(){cout<<"C destructor"<<endl;}
    };
    int main(){
        C test;
        return 0;
    }

运行结果:

A constructor

B constructor

C constructor

C destructor

B destructor

A destructor

从运行结果可以很明显地看出来,构造函数和析构函数的执行顺序是相反的。

需要注意的是,一个类只能有一个析构函数,调用时不会出现二义性,所以析构函数不需要显式地调用。

上一篇:广州达内告诉你C++派生类的构造函数的作用
下一篇:广州达内解析何为C++类的多继承

跟着广州达内培训班学习C++预处理指令

跟着广州达内C++培训班一起学习数据结构

C++ getline()函数读入一行字符

如何使用C++流成员函数put输出单个字符

选择城市和中心
贵州省

广西省

海南省