我用了两个例子来证明:
例一:
#include<iostream>
using namespace std;
class A{
public:
A(){cout<<"constructor is called.....\n";}
~A(){cout << "destructor is called....." << endl; }
};
int main(){
A a;
a.~A();
return 0;
}
结果同楼上的两位一样:两次调用了析构函数,但这是真的调用,或者只是一个假象??
例二:
#include<iostream>
using namespace std;
class A{
public:
A(){cout<<"constructor is called.....\n";}
~A(){cout << "destructor is called....." << endl; }
};
int main(){
A a;
//a.~A();
return 0;
a.~A();
}
将显式调用的语句放到作用域结束的位置,结果则是:析构函数只被调用一次!!