Effective Modern C++ noexcept

我们知道关于函数发射异常这件事,真正重要的信息是他会不会发射异常。在C++11中,无条件的为函数声明noexcept就是为了不会发射异常的函数而准备的。函数是否要加上如此声明,事关接口的设计。当我们知道函数不会发射异常但却没有为函数加上noexcept,这就是接口规格设计存在缺陷。

为不会发射异常的函数加上noexcept,可以让编译器生成更好的代码(也就是说对代码会进行优化)。在带有noexcept声明的函数中,优化器不需要在异常传出函数的前提下,将执行期栈保持在可开解的状态,也不需要在异常逸出函数的前提下,保证所有其中的对象以其被构造顺序的逆序完成析构。

noexcept性质对于移动操作,swap,内存释放函数和析构函数最有价值。大多数函数都是异常中立的,不具备noexcept。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值