析构函数的调用

#include <iostream>
using namespace std;

class A
{public:
 A()
{cout<<"startA"<<endl;}
 ~A()
{cout<<"endA"<<endl;}
};
class B:public A
{public:
 B()
{cout<<"startB"<<endl;}
 ~B()
{cout<<"endB"<<endl;}
};
class C:public B
{public:
 C()
{cout<<"startC"<<endl;}
 ~C()
{cout<<"endC"<<endl;}
};
int main()
{
   B* a = new C();
delete a;
a=nullptr;
   return 0;
}
****************************
startA
startB
startC
endB
endA
****************************

这道题为什么A的析构函数会被调用,不是要按照当前是那个类型就调用那个析构吗?
全部评论
创建B对象的构造顺序为AB 析构B的顺序和构造相反,所以是BA
点赞 回复 分享
发布于 2023-09-25 15:38 贵州

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务