关于异常机制请看这篇文章,附链接:
C++异常机制详解https://blog.csdn.net/qq_43471489/article/details/123495003栈解旋是指,在抛出异常的时候,在try语句块内部,抛异常前所有在栈上构造的对象都将会被析构。下面通过程序举例说明:
#includeusing namespace std; class TestClass { public: TestClass() { cout << "构造函数" << endl; } ~TestClass() { cout << "析构函数" << endl; } }; void CreateObject() { TestClass t1, t2; cout << "创建对象" << endl; throw TestClass(); } int main() { try { CreateObject(); } catch (TestClass t) { cout << "TestClass 类型异常" << endl; } catch (...) { cout << "其他异常" << endl; } system("pause"); return 0; }
运行结果可以看到,抛异常后调用了两次析构函数



