zoukankan      html  css  js  c++  java
  • c++0.9-----c++ primer之noexcept解读

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

    noexcept在第474页讲得较详细。

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

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

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

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

    以上仅为个人观点。

  • 相关阅读:
    NameError:name ‘xrange’ is not defined
    CNN卷积核反传分析
    在定义卷积时为什么要对其中一个函数进行翻转
    Python的浮点数损失精度问题
    Python实现im2col和col2im函数
    2018.04.19
    4 Git 基础
    Clash Royale开发日志
    2018-04-12
    python urllib2
  • 原文地址:https://www.cnblogs.com/yulianggo/p/9394087.html
Copyright © 2011-2022 走看看