1,派生类对象被删除时析构函数的执行顺序
当对象被删除时,派生类的析构函数被执行,
先执行派生类的析构函数,再类的对象成员的析构函数,最后执行基类的析构函数
与构造函数的执行顺序相反
具体执行顺序:
1,先执行派生类的析构函数
2,执行类初始化表上的对象成员的析构函数
3,执行基类的析构函数
2,实例
通过运行下面实例来理解上面的过程
#include<iostream>
using namespace std;
//类A的定义
class A
{
private:
int x;
public:
A(int xp=0)
{
x=xp;
cout<<"A的构造函数被执行"<<endl;
}
~A()
{
cout<<"A类析构函数被执行"<<endl;
}
};
class B
{
public:
B()
{
cout<<"B的构造函数被执行"<<endl;
}
~B()
{
cout<<"B类析构函数被执行"<<endl;
}
};
//创建C派生类 继承 A
class C:public A
{
private:
int y;
B b;
public:
C(int xp,int yp):A(xp),b()
{
y=yp;
cout<<"C的构造函数被执行"<<endl;
};
~C()
{
cout<<"C类析构函数被执行"<<endl;
}
};
int main()
{
C *expC = new C(1,20);
delete expC;
return 0;
}
来源:CSDN
作者:蒋程扬
链接:https://blog.csdn.net/qq_38441692/article/details/104521219