c++ - C++中使用成员函数删除对象

标签 c++ pointers memory-management memory-leaks

有这个:

class Foo
{
public:
    void destroy() { delete this; }
public:
    // Stuff here...
};

int main(int argc, char *argv[])
{
    Foo* foo = new Foo;

    // Option 1
    delete foo;

    // Option 2:
    foo->destroy();

    return 0;
}

方案一和方案二是同一个操作吗?这是销毁物体的“正确”方法吗?为什么/为什么不?

非常感谢,

最佳答案

是的,在这种情况下两者是等价的。

但是您绝对应该选择选项 1。delete this 很容易出错,违反了各种设计原则,在这种情况下完全没有意义。

关于c++ - C++中使用成员函数删除对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22810035/

相关文章:

c++ - 错误: expected unqualified-id before ‘class’

c++ - wxWidgets 工具栏文本对齐

c++ - 具有空 main() 的程序可以分配内存吗?

c - while(*p++) 危险吗?

c++ - 如何在 C++ 中使用 new 运算符初始化内存?

c++ - 在运行时将变量添加到结构C++

C++ 快速排序字符串指针数组

比较 strcpy() 的两个实现

.net - 如何拥有庞大的 list ?大于 2 GiB?

java - HashMap内存效率