C++用引用捕获异常
2014-03-22 10:31
225 查看
详细可以参见More Effective C++。
1、【与捕获指针相比】可以不用捕获指针那样考虑对象是否需要删除的问题。
2、【与捕获值相比】捕获值的话,会进行两次拷贝,第一次拷贝实际上是针对运行时的类型拷贝的,这个跟你抛出的对象的类型有关(请注意,如果我们下面的例子当中抛出的是一个指向子类的父类的引用,那么两次构造调用的都是父类的!);第二次拷贝取决于你捕获的对象类型,因此会引起对象切割的问题。捕获引用不会有这个问题,因为不会有第二次拷贝发生。
1、【与捕获指针相比】可以不用捕获指针那样考虑对象是否需要删除的问题。
2、【与捕获值相比】捕获值的话,会进行两次拷贝,第一次拷贝实际上是针对运行时的类型拷贝的,这个跟你抛出的对象的类型有关(请注意,如果我们下面的例子当中抛出的是一个指向子类的父类的引用,那么两次构造调用的都是父类的!);第二次拷贝取决于你捕获的对象类型,因此会引起对象切割的问题。捕获引用不会有这个问题,因为不会有第二次拷贝发生。
相关文章推荐
- More Effective C++ 阅读笔记(九)--要用引用(reference)捕获异常
- More Effective C++:通过引用捕获异常
- More Effective C++:通过引用捕获异常(转)
- More Effective C++:通过引用捕获异常
- C++之通过引用(reference)捕获异常(12)---《More Effective C++》
- More Effective C++----(13)通过引用捕获异常
- C/C++异常捕获try{}catch(...) // __try{ //...}__except(EXCEPTION_EXECUTE_HANDLER){ //...}
- C++:抛出异常与类的引用
- C++ win32 dll 引用外部CLR,加载托管程序集异常-Error 10 error LNK2019: unresolved external symbol _CLRCreateInstancet
- C++ 抛出并捕获多个异常
- 异常:已捕获: "Error creating context 'spring.root': 未将对象引用设置到对象的实例。" (System.Configuration.ConfigurationErrorsException) 捕获到一个 System.Configuration.ConfigurationErrorsException: "Error creating context 'sp
- C++ 异常捕获 try 和 __try的区别
- [转贴] 从零开始学C++之异常(二):程序错误、异常(语法、抛出、捕获、传播)、栈展开
- 【C/C++开发】try-cache-finnally捕获异常
- (引用).Net 下未捕获异常的处理
- 对象指针4.通过引用捕获异常
- c++异常捕获例子
- C++中的异常捕获与处理:Try、Throw、Catch关键字的理解和使用
- 关于C++中的意外异常和未捕获异常
- c++(1) 类模板/构造函数/捕获异常 实例