This question already has answers here:
Is delete this allowed?

(10个答案)


5年前关闭。




假设我有一个带有函数foorelease类,该函数调用delete this:
struct foo
{
    std::int32_t release() const
    {
        delete this;
        return 0;
    }
};
  • 如果函数是delete this,为什么还要调用const呢?
  • 是否定义了返回0的行为? delete之后的功能不是“sort-of-die”吗?

  • 引用该标准的答案(这样我就可以在代码中添加一些花哨的注释)将非常感激。

    最佳答案



    从标准5.3.5 $ 2删除[expr.delete]







    我觉得很安全。 delete this;将调用析构函数并释放对象(包括成员变量和基类子对象)所拥有的内存。之后,如果您不取消引用this或访问任何成员变量,那将是安全的。

    关于c++ - `delete this`在函数中的行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33119348/

    10-12 00:15
    查看更多