delete this
一般不要用,用了就要注意一下几点
1. 只能用于 new
申请的对象,不能用于栈上对象
#include <iostream>
class A
{
public:
void func()
{
delete this;
}
};
int main(int argc, char const *argv[])
{
A *ptr = new A;
ptr->func();
ptr = nullptr;
A a;
a.func(); // 这里会挂掉
getchar();
return 0;
}
2. delete之后,任何成员都不能再用了
#include <iostream>
class A
{
int x;
public:
A() { x = 0; }
void func()
{
delete this;
std::cout << x; // 未定义行为
}
};
int main(int argc, char const *argv[])
{
A *obj = new A;
obj->func();
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术