C++对象生命周期

饭炒蛋2009 2015-08-26 10:20:24

class A
{
public:
A()
{

}

~A()
{
cout << "~A()" << endl;
}
};

class B
{
A *a;
public:
B(A *a) : a(a)
{

}

~B()
{
cout << "~B()" << endl;
}
};

B中有对保存了指向A的指针,如果写成B(A *a) : a(new A) 这两种的对象生命周期有什么区别呢?
...全文
139 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
勤奋的小游侠 2015-08-26
  • 打赏
  • 举报
回复
new 出来的东西如果不用delete删除,就一直会存在到程序结束。 所以,看你的指针指向的是什么东西,如果同样的new出来的,那么生存期是一样的
勤奋的小游侠 2015-08-26
  • 打赏
  • 举报
回复
引用 2 楼 rejoy2009 的回复:
[quote=引用 1 楼 lovesmiles 的回复:] new 出来的东西如果不用delete删除,就一直会存在到程序结束。 所以,看你的指针指向的是什么东西,如果同样的new出来的,那么生存期是一样的
不能在B的析构函数里delete a吧[/quote] 可以,内存管理的原则通常是谁分配谁释放。如果是B new出来的,通常就由B来delete,如果不是B new出来的,就不应该由Bdelete.
饭炒蛋2009 2015-08-26
  • 打赏
  • 举报
回复
引用 1 楼 lovesmiles 的回复:
new 出来的东西如果不用delete删除,就一直会存在到程序结束。 所以,看你的指针指向的是什么东西,如果同样的new出来的,那么生存期是一样的
不能在B的析构函数里delete a吧

64,654

社区成员

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

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