析构函数的调用

#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 贵州

相关推荐

收到了小米的实习offer,犹豫是否要去。。。
认真搞学习:雷总还当过首富呢,公司不算大厂算独角兽吗
点赞 评论 收藏
分享
牛客383479252号:9,2学生暑期实习失利开始投小厂,给这群人整自信了
点赞 评论 收藏
分享
迷茫的大四🐶:自信一点,我认为你可以拿到50k,低于50k完全配不上你的能力,兄弟,不要被他们骗了,你可以的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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