(转)C++异常对象三种方式传递的综合比较
2009-09-23 10:00
302 查看
按值传递 | 引用传递 | 指针传递 | |
语法 | catch(std::exception e) | catch(std::exception& e) | catch(std::exception* e) |
如何抛出异常? | ①throw exception() ②exception ex;throw ex; ③throw ex_global; | ①throw exception() ②exception ex;throw ex; ③throw ex_global; | ①throw new exception(); |
异常对象的构造次数 | 三次 | 二次 | 一次 |
效率 | 低 | 中 | 高 |
异常对象什么时候被销毁 | ①局部变量离开作用域时销毁 ②临时变量在catch block执行完毕后销毁 ③catch后面的那个类似参数的异常对象也是在catch block执行完毕后销毁 | ①局部变量离开作用域时销毁 ②临时变量在catch block执行完毕后销毁 | 异常对象动态地在堆上被创建,同时它也要动态的被销毁,销毁的时机是在catch block块中处理完毕后进行 |
发生对象切片 | 可能会 | 不会 | 不会 |
安全性 | 较低,可能会发生对象切片 | 很好 | 低,依赖于程序员的能力,可能会发生内存泄漏;或导致程序崩溃 |
综合性能 | 差 | 好 | 一般 |
易使用性 | 好 | 好 | 一般 |
相关文章推荐
- C++异常对象三种方式传递的综合比较
- C++的异常对象按传值的方式被复制和传递
- C++的异常对象按引用方式被传递
- C++异常传递的三种方式
- 项目1 - C/C++语言中函数参数传递的三种方式
- 第二周项目:C/C++函数参数传递的三种方式
- 第2周项目1--c/c++语言中函数参数传递的三种方式
- 项目1-c/c++语言中函数参数传递的三种方式
- 第二周 项目1 C++中函数参数传递的三种方式
- C++创建对象的三种方式
- 第2周【项目1 - C/C++语言中函数参数传递的三种方式】
- 第二周项目一 :c/c++语言中函数传递的三种方式
- 第2周项目1-C/C++语言中函数参数传递的三种方式
- 数据结构第二周项目--C/C++语言中函数传递的三种方式
- C++创建对象的三种方式
- 第二周项目1-C/C++语言中函数参数传递的三种方式
- 【No.12 C++参数传递方式造成的对象切割】
- C++三种内存对象比较
- 第二周项目1--C/C++语言中函数参数传递的三种方式
- 第二周项目1-C/C++语言中函数参数传递的三种方式