【发布时间】:2014-11-30 03:36:31
【问题描述】:
在显式调用析构函数时,它会执行两次。这是什么原因?
#include <iostream>
using namespace std;
class A
{
public:
int x;
A() { cout << "A's constructor called " << endl; }
~A(){
cout<<"A's desctructor called "<<endl;
}
};
int main()
{
A a;
A b;
a.~A();
}
输出:
A 的构造函数被调用
A 的析构函数称为
A 的析构函数叫做
【问题讨论】:
-
第一个析构函数用于
a,第二个用于b。 -
除了误认为作用域中的任何对象都被析构函数清理之外,没有其他原因。
-
我在上面看到了未定义的行为:任何事情都可以发生!
标签: c++ destructor