delete this 有什么后果?

bamboostflying 2006-11-24 09:36:01
我的一个class A{

public:
A *pThis ;
void Func();
}

A::A()
{
pThis = this;
}

void A::Func()
{
A *a = new A;
//do something to a
delete pThis;
pThis = a;
}

这样操作后,没有发现程序异常,只是this指向的类怎么都没有初始化

过一会不知道做了什么操作以后,this又指向次类了?

能解释一下吗
...全文
253 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
taodm 2006-11-24
  • 打赏
  • 举报
回复
汗!delete this后就不可以再对这个对象做任何访问了。
alan001 2006-11-24
  • 打赏
  • 举报
回复
delete p;后空间释放,但p不会变成NULL.............
KthTes 2006-11-24
  • 打赏
  • 举报
回复
楼主这个delete this似乎没啥必要。
KthTes 2006-11-24
  • 打赏
  • 举报
回复
delete this是在类不知道什么时候被干躺的时候才用的。比如A类对象要同时被B,C干,BC双方互相不知道对方什么时候干完,于是只能添加一个“引用计数”,让A自己决定什么时候自杀。
jixingzhong 2006-11-24
  • 打赏
  • 举报
回复
指针 只是指向一个地址,
delete 只是 析构+释放 某个地址内的对象,
两者不冲突 ...

只是 在 delete 后,
如果指针还在这里,
运行会 出错 ....
huangyangman 2006-11-24
  • 打赏
  • 举报
回复
调用Func()的对象是new出来的吗?
vigorous001 2006-11-24
  • 打赏
  • 举报
回复
//我要是不delete pThis,只把pThis = a;那内存岂不是泄漏了?

不会泄漏吧,析构就行了。
westdot 2006-11-24
  • 打赏
  • 举报
回复
void A::Func()
{
A *a = new A;
//do something to a
delete pThis;
pThis = a;
}
delete pThis这句把本对象的内存空间释放了,你接着又pThis = a来访问pThis。显然是错的。
bamboostflying 2006-11-24
  • 打赏
  • 举报
回复
嗯 我想了想,不应该delete pThis, 这里我调用一下析构函数就行了 delete this肯定绘出问题
bamboostflying 2006-11-24
  • 打赏
  • 举报
回复
我要是不delete pThis,只把pThis = a;那内存岂不是泄漏了?

64,432

社区成员

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

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