加入收藏 | 设为首页 | 会员中心 | 我要投稿 拼字网 - 核心网 (https://www.hexinwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

C++基类与派生类的析构函数

发布时间:2022-07-01 15:48:54 所属栏目:语言 来源:互联网
导读:和构造函数类似,析构函数也不能被继承。与构造函数不同的是,在派生类的析构函数中不用显式地调用基类的析构函数,因为每个类只有一个析构函数,编译器知道如何选择,无需程序员干涉。 另外析构函数的执行顺序和构造函数的执行顺序也刚好相反: 创建派生类
  和构造函数类似,析构函数也不能被继承。与构造函数不同的是,在派生类的析构函数中不用显式地调用基类的析构函数,因为每个类只有一个析构函数,编译器知道如何选择,无需程序员干涉。
 
  另外析构函数的执行顺序和构造函数的执行顺序也刚好相反:
  创建派生类对象时,构造函数的执行顺序和继承顺序相同,即先执行基类构造函数,再执行派生类构造函数。
  而销毁派生类对象时,析构函数的执行顺序和继承顺序相反,即先执行派生类析构函数,再执行基类析构函数。
 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

(编辑:拼字网 - 核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!