小编use*_*046的帖子

c ++析构函数在同一个对象上被调用了2次?

我有以下代码片段:

#include<iostream>
using namespace std;

class Test {

public:

    Test()  { cout << "Constructor is executed\n"; }
    ~Test() { cout << "Destructor is executed\n";}
    void show()  {  this->Test::~Test(); }
};

int main() {

    Test t;
    t.show();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是输出:

Constructor is executed
Destructor is executed
Destructor is executed
Run Code Online (Sandbox Code Playgroud)

问题:如果t.show()已经在"this"对象(即当前对象)上调用析构函数,导致"析构函数被执行"显示一次,那么是什么原因导致它第二次显示?在这种情况下哪个对象被破坏了?

c++ destructor c++11

-3
推荐指数
1
解决办法
169
查看次数

标签 统计

c++ ×1

c++11 ×1

destructor ×1