time 
设为首页】【收藏本站
当前位置: 主页 > 程序设计 > C\C++\VC > C++基础 > 第13集 C++异常对象三种方式传递的综合比较

第13集 C++异常对象三种方式传递的综合比较

时间:2009-12-04 22:56 点击:672次 字体:[ ]




  上几篇文章已经分别对C++的异常对象的几种不同的传递方式进行了详细地讨论。它们可以被分为按值传递,按引用传递,以及按指针传递等三种方式,现在该是对它们进行全面盘点总结的时候了。希望这种对比、总结及分析对朋友们理解这三种方式的各种区别有所帮助。

  按值传递 引用传递 指针传递
语法 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++异常与面向对象的相互关系,以及异常对象的构造、传递和最后析构销毁的过程。

  主人公阿愚现在已经开始有点小有成就感了,他知道自己对她(C++中的异常处理机制)已有了相当深入的了解,并且把她完全当成了一个知己,在自己的编程生涯中再也开始离不开她了。而且他与她的配合已经变得十分的默契,得心应手。但是有时好像还是有点迷糊,例如,对于在C++异常重新被抛出时(rethrow),异常对象的构造、传递和析构销毁的过程又将如何?有哪些不同之处?,要想了解更多的细节,程序员朋友们!请跟主人公阿愚进入到下一篇文章中,GO!



本文地址 : http://www.fengfly.com/plus/view-159894-1.html
标签:
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码: