在c++中,当一个对象离开定义它的域时,析构函数就被自动调用。直观来讲,就是离开域的右括号。不过据说采用setjump()和longjump()来实现的非局部goto语句就不会触发析构函数。
#include <iostream>
using namespace std;
class Test{
public:
Test(){
cout << "构造" << endl;
}
~Test(){
cout << "析构" << endl;
}
};
int main(){
{
Test t;
goto jump;
}
jump:
return 0;
}
using namespace std;
class Test{
public:
Test(){
cout << "构造" << endl;
}
~Test(){
cout << "析构" << endl;
}
};
int main(){
{
Test t;
goto jump;
}
jump:
return 0;
}