析构函数的调用

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

相关推荐

今天 11:27
门头沟学院 Java
点赞 评论 收藏
分享
程序员小白条:你是沟通了900个,不是投了900份简历,你能投900份,意味着对面都要回复你900次,你早就找到实习了,没亮点就是这样的,别局限地区,时间投的也要早,现在都要7月了
点赞 评论 收藏
分享
06-08 22:25
门头沟学院 Java
从零开始的转码生活:这hr不会打开手机不分青红皂白给所有人群发这句话,过一会再给所有人再发一遍,这肯定会有重复的,不管,再过一会再发一遍
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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