【C++异常机制】栈解旋

简介: 【C++异常机制】栈解旋

关于异常机制请看这篇文章,附链接:

image.png

栈解旋是指,在抛出异常的时候,在try语句块内部,抛异常前所有在栈上构造的对象都将会被析构。下面通过程序举例说明:

1. #include <iostream>
2. using namespace std;
3. 
4. class TestClass
5. {
6. public:
7.  TestClass()
8.  {
9.    cout << "构造函数" << endl;
10.   }
11.   ~TestClass()
12.   {
13.     cout << "析构函数" << endl;
14.   }
15. };
16. 
17. void CreateObject()
18. {
19.   TestClass t1, t2;
20.   cout << "创建对象" << endl;
21. 
22.   throw TestClass();
23. }
24. 
25. int main()
26. {
27.   try
28.   {
29.     CreateObject();
30.   }
31.   catch (TestClass t)
32.   {
33.     cout << "TestClass 类型异常" << endl;
34.   }
35.   catch (...)
36.   {
37.     cout << "其他异常" << endl;
38.   }
39. 
40.   system("pause");
41.   return 0;
42. }

运行结果可以看到,抛异常后调用了两次析构函数


相关文章
|
8月前
|
设计模式 算法 C++
【C++初阶】12. Stack(栈)和Queue(队列)
【C++初阶】12. Stack(栈)和Queue(队列)
71 3
|
8月前
|
Go C++
【力扣】2696. 删除子串后的字符串最小长度(模拟 栈 C++ Go实现栈)
【2月更文挑战第18天】2696. 删除子串后的字符串最小长度(模拟 栈 C++ Go实现栈)
63 6
|
8月前
|
C++
使用C++代码实现栈
使用C++代码实现栈
|
8月前
|
存储 设计模式 C语言
C++中的栈和队列
C++中的栈和队列
52 0
|
3月前
|
算法 C++
|
3月前
|
算法 C++
【算法单调栈】 矩形牛棚(C/C++)
【算法单调栈】 矩形牛棚(C/C++)
|
7月前
|
存储 算法 程序员
【C++进阶】深入STL之 栈与队列:数据结构探索之旅
【C++进阶】深入STL之 栈与队列:数据结构探索之旅
65 4
|
7月前
|
程序员 编译器 C++
C++内存分区模型(代码区、全局区、栈区、堆区)
C++内存分区模型(代码区、全局区、栈区、堆区)
|
8月前
|
算法 C++
c++算法学习笔记 (15) 单调栈与单调队列
c++算法学习笔记 (15) 单调栈与单调队列
|
8月前
|
算法 C++
c++算法学习笔记 (14) 栈与队列
c++算法学习笔记 (14) 栈与队列