我写了这段代码如下:
#include <iostream>
using namespace std;
class T
{
public:
T()
{
cout << "bb\n";
this -> ~T();
cout << "zz" << endl;
}
~T()
{
cout << "hello\n";
};
};
int main()
{
T a;
return 0;
}
编辑
对不起,应该是T a;而不是T a(),现在我得到输出:
bb
hello
zz
hello
但我对结果感到困惑.为什么这个程序可以成功运行?
编辑
我不认为我的问题是重复的.在我的代码中,构造函数在函数完成之前调用析构函数.但是,它在该问题中明确地调用了两次析构函数.
最佳答案 这是未定义的行为:您在尚未完全构造的对象上调用析构函数.