zoukankan      html  css  js  c++  java
  • C++析构函数不能失败的4个理由

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

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

    1. 无法用于函数;当作为临时变量(对象),在析构时抛异常将导致程序异常终止。
    2. 不能被继承:派生类的析构过程也将可能抛出异常;无法作为全局或静态变量。
    3. 无法用于数组。数组无法正确的回滚,行为可能未定义。假如数组有10个元素,创建时出错(构造函数抛异常),而回滚时需调用析构函数,但此过程有可能出现一个或多个异常。
    4. 无法用于STL容器中,STL禁止所有一起使用的对象析构时抛异常。
  • 相关阅读:
    1+x LNMP + WordPress
    1+X Samba
    1+X NFS
    1+x FTP
    1+x LVM
    笔记(全)
    前端性能优化整理总结
    Event Loop我知道,宏任务微任务是什么鬼?
    深入探讨深拷贝浅拷贝两兄弟
    react后台管理系统路由方案及react-router原理解析
  • 原文地址:https://www.cnblogs.com/zhenjing/p/1859450.html
Copyright © 2011-2022 走看看