析构函数不能失败的理由

析构函数不能失败的理由

分类: C++再学习系列 2009-07-02 21:39 3195人阅读 评论(12) 收藏 举报

析构函数不能失败的理由

析构函数非常特殊,编译器将在不同的上下文中自动调用。由于其特殊性,C++标准有如下建议:在栈展开过程中,如果析构函数抛异常,terminate函数将被调用。因此,析构函数应该总是能够捕获异常,并且不会让异常传播到析构函数之外。(STL中的所有析构函数均不会失败)。

 

对于析构函数可能抛出异常的类,将有如下限制:

  1. 无法用于函数;当作为临时变量(对象),在析构时抛异常将导致程序异常终止。
  2. 不能被继承:派生类的析构过程也将可能抛出异常;无法作为全局或静态变量。
  3. 无法用于数组。数组无法正确的回滚,行为可能未定义。假如数组有10个元素,创建时出错(构造函数抛异常),而回滚时需调用析构函数,但此过程有可能出现一个或多个异常。
  4. 无法用于STL容器中,STL禁止所有一起使用的对象析构时抛异常。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值