和构造函数类似,析构函数也不能被继承。与构造函数不同的是,在派生类的析构函数中不用显式地调用基类的析构函数,因为每个类只有一个析构函数,编译器知道如何选择,无需程序员干涉。
另外析构函数的执行顺序和构造函数的执行顺序也刚好相反:
请看下面的例子:
- #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;
- }
运行结果: