This question already has answers here:
Is delete this allowed?
(10个答案)
5年前关闭。
假设我有一个带有函数
如果函数是 是否定义了返回0的行为?
引用该标准的答案(这样我就可以在代码中添加一些花哨的注释)将非常感激。
(10个答案)
5年前关闭。
假设我有一个带有函数
foo
的release
类,该函数调用delete this
:struct foo
{
std::int32_t release() const
{
delete this;
return 0;
}
};
delete this
,为什么还要调用const
呢? delete
之后的功能不是“sort-of-die”吗? 引用该标准的答案(这样我就可以在代码中添加一些花哨的注释)将非常感激。
最佳答案
从标准5.3.5 $ 2删除[expr.delete]
和
我觉得很安全。 delete this;
将调用析构函数并释放对象(包括成员变量和基类子对象)所拥有的内存。之后,如果您不取消引用this
或访问任何成员变量,那将是安全的。
关于c++ - `delete this`在函数中的行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33119348/