一个类里析构函数执行的顺序
先执行析构函数的函数体,然后按跟声明顺序相反的顺序执行所有非静态数据成员对象的析构函数。如果有父类,接下来执行父类的析构函数。
class Derived:Base{
Object member0;
Object member1;
~Derived(){..}
};
先执行~Derived,再是member0和member1的析构,再是Base.~Base
派生类继承了基类的成员,实现了代码的重复利用,但基类的构造函数和析构函数不能被继承。如果在派生类中需要对新增加的成员进行初始化,则需要加入派生类的构造函数。同样派生类也需要添加析构函数来实现一些结束工作。
当创建对象时,编译系统会自动调用构造函数。当撤销对象时,编译系统会自动调用析构函数。当创建派生类的对象时,首先执行基类的构造函数,然后执行派生类的构造函数。当撤销对象时,则先执行派生类的析构函数,然后再执行基类的析构函数。
#include"iostream.h"
class A //定义一个类
{
public:
A() //类的构造函数
{
cout<<"基类的构造函数"<<endl;
}
~A() //类的析构函数
{
cout<<"基类的析构函数"<<endl;
}
};
class B:public A //派生类
{
public:
B() //派生类的构造函数
{
cout<<"派生类的构造函数"<<endl;
}
~B() //派生类的析构函数
{
cout<<"派生类的析构函数"<<endl;
}
};
void main()
{
B p; //派生类的对象
}
输出:
基类的构造函数
派生类的构造函数
派生类的析构函数
基类的析构函数