子类对象包含的基类数据是在子类中析构还是基类

sunyuqian 2012-08-22 08:53:06
#include <iostream>
using namespace std;

class A
{
public:
A():i(1){cout<<i<<endl;}
~A(){cout<<"A"<<endl;}
int i;
};

class B : public A
{
public:
B():A(){}
~B(){cout<<"B"<<endl;}
};

int main()
{
B b;
}


大家好,B中包含了A中的i变量,对象析构时,B中的i变量是在~B中清理还是在~A中清理
在~A中理由:构造函数就是调用基类构造函数赋值,所以析构也是
在~B中理由:继承A,i就是B的了
...全文
125 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunyuqian 2012-08-23
  • 打赏
  • 举报
回复
谢谢了
deadlxd 2012-08-22
  • 打赏
  • 举报
回复
当B析构的时候
1)执行析构函数中的代码
2)释放成员变量
3)释放基类部分
tiankong_bear 2012-08-22
  • 打赏
  • 举报
回复
基类是虚拟析构函数 就会被调用,否则不会
xmlilin 2012-08-22
  • 打赏
  • 举报
回复
应该是~A

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧