首页 > 编程语言 > 详细

c++0.9-----c++ primer之noexcept解读

时间:2018-07-31 10:13:02      阅读:142      评论:0      收藏:0      [点我收藏+]

noexcept技术非常重要,奈何c++ primer第五版所讲得冗长,需要仔细琢磨才好理解,特此记录一下我的理解:

noexcept在第474页讲得较详细。

  作者的思路是:首先声明移动操作很少抛出异常,其次标准库容器抛出异常时对原容器对象毫无影响。

下面给出了两段详细解释:

  1.移动构造函数不分配内存,因此很少抛出异常。但是一旦它抛出异常,对移动源对象而言就是破坏性的。也就是说即使我花try/catch处理这个异常,已经晚了,它再也不是从前的那个它了。所以,后面得出结论。移动构造函数适合noexcept:要么它正常运行完,要么出错直接退出程序,不会进行异常处理。

  2.拷贝构造函数分配内存,经常抛出异常。但是看一看469页的reallocate成员就会知道,抛出异常时,旧内存还没有删掉旧元素空间。这个时候,使用异常处理try/catch可以恢复原来容器的状态,因此拷贝构造函数不用noexcept。

 

以上仅为个人观点。

c++0.9-----c++ primer之noexcept解读

原文:https://www.cnblogs.com/yulianggo/p/9394087.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!