C++继承机制下的析构函数
创建派生类对象时,构造函数的调用顺序是按照继承顺序,先执行基类构造函数,然后再执行派生类的构造函数。但是对于析构函数,其调用顺序是正好相反的,即先执行派生类的构造函数,然后再执行基类的构造函数。
举个例子:
因为每一个类中最多只能有一个析构函数,因此调用的时候并不会出现二义性,因此析构函数不需要显式的调用。
声明:《C++系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。
举个例子:
#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; }在本例中定义了三个类,C 类继承自 B 类,B 类继承自 A 类,每个类都定义了默认构造函数和析构函数。在主函数中,我们定义了 C 类的一个对象,创建对象时各个类的构造函数会被调用,之后退出程序,各类的析构函数会被逐一调用。程序运行结果如下:
A constructor
B constructor
C constructor
C destructor
B destructor
A destructor
因为每一个类中最多只能有一个析构函数,因此调用的时候并不会出现二义性,因此析构函数不需要显式的调用。
声明:《C++系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。