可能重复:
C++:删除这个?
在C++中,可以删除函数定义中的自身对象.这有什么副作用?
class MyClass {
public:
void ~myClass() {}
void myFunction() {
// logic here
delete this;
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
Zoe*_*oey 12
您可以从内部删除对象,但之后,您不必在执行此操作后访问该类实例的任何成员变量或函数.
Naw*_*waz 12
成员函数说删除这个是合法的(和道德的)吗?
只要你小心,对象就可以自杀(删除它).
这是我如何定义"小心":
你必须绝对100%肯定这个对象是通过new(不是new [],也不是通过放置new,也不是堆栈上的本地对象,也不是全局,也不是另一个对象的成员;但是通过普通的普通新).
您必须绝对100%肯定您的成员函数将是在此对象上调用的最后一个成员函数.
您必须绝对100%确定您的其他成员函数(在删除此行之后)不会触及此对象的任何部分(包括调用任何其他成员函数或触摸任何数据成员).
当然,当您没有虚拟析构函数时,此指针是指向基类的指针时,通常需要注意.
| 归档时间: |
|
| 查看次数: |
26154 次 |
| 最近记录: |