c++ - 在析构函数中删除 (this) 指针

标签 c++

<分区>

我写这个程序只是为了检查如果我们在类的析构函数中删除这个指针会发生什么。这是我的代码

 class xxx{
    public: xxx(){cout<<"constructor called"<<endl;}
            ~xxx(){cout<<"destructor called"<<endl;delete(this);}  //deleting the 'this' pointer
 };
 int main(int argc, char *argv[])
 {
    xxx *x1=new xxx();
    delete x1;
    return 0;
 }

当我运行这个程序时,它会导致无限循环打印“desctructor called”。

delete 运算符和析构函数之间有什么关系?另外,当您在析构函数中使用 delete this 时会发生什么情况?

最佳答案

this->~destructor 被调用,然后 delete(this) 将再次调用 this->~destructor 从而导致调用无限期地发挥作用。

关于c++ - 在析构函数中删除 (this) 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20273041/

相关文章:

c++ - 如何找到 USER 44 PANIC 的原因?

java - SWIG:从普通 C++ 到工作包装器

c++ - 从堆栈 C++ 的单链表实现中弹出

c++ - 在 UWP 中使用自定义视频效果

具有多个类型名的 C++ 模板

c++ - STL - 是否每个编译器都以不同方式实现它?

C++ 在 Unicode 而不是 Ansi 中创建文件

C++ SendMessage循环停止和行尾

c++ - 为什么 rval ref 绑定(bind)到 lval ref 函数?

c++ - 有没有更好的删除动态数组元素的方法?