栈解旋:当发生异常时,从进入try块后,到异常被抛掷前,这期间在栈上的构造的所有对象都会被自动析构。析构的顺序与构造的顺序相反,这一过程被称为栈的解旋(unwinding) (注意栈解旋发生的时间段~)
#include<iostream>
using namespace std;
class test {
public:
test(const int& a,const int& b)
{
this->a = a;
this->b = b;
cout << a << b << endl;
}
~test()
{
cout << "析构函数" << a << b << endl;
}
private:
int a;
int b;
};
void myfunc()
{
test T1(1, 2);
test T2(3, 4);
throw 5;
}
void main()
{
try
{
myfunc();
}
catch (int)
{
cout << "exception test" << endl;
}
catch (...)
{
cout << "done" << endl;
}
system("pause");
}