C++析构函数不能失败的4个理由

简介:

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

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

  1. 无法用于函数;当作为临时变量(对象),在析构时抛异常将导致程序异常终止。
  2. 不能被继承:派生类的析构过程也将可能抛出异常;无法作为全局或静态变量。
  3. 无法用于数组。数组无法正确的回滚,行为可能未定义。假如数组有10个元素,创建时出错(构造函数抛异常),而回滚时需调用析构函数,但此过程有可能出现一个或多个异常。
  4. 无法用于STL容器中,STL禁止所有一起使用的对象析构时抛异常。
本文转自 zhenjing 博客园博客,原文链接: http://www.cnblogs.com/zhenjing/archive/2010/10/25/1859450.html   ,如需转载请自行联系原作者
相关文章
|
4月前
|
编译器 C++
【C++】类和对象(中)之构造函数与析构函数
【C++】类和对象(中)之构造函数与析构函数
29 0
|
3月前
|
C++
C++析构函数定义为virtual虚函数,有什么作用?
C++析构函数定义为virtual虚函数,有什么作用?
28 0
|
28天前
|
编译器 C语言 C++
【c++】类和对象(三)构造函数和析构函数
朋友们大家好,本篇文章我们带来类和对象重要的部分,构造函数和析构函数
|
1月前
|
开发框架 安全 编译器
【C/C++ 深入探讨构函数】C++ 编译器在什么情况下无法生成默认的析构函数?
【C/C++ 深入探讨构函数】C++ 编译器在什么情况下无法生成默认的析构函数?
50 1
|
1月前
|
设计模式 算法 编译器
【C++ 析构函数】C++ 私有析构函数的作用
【C++ 析构函数】C++ 私有析构函数的作用
24 1
|
1月前
|
Java 程序员 编译器
【C/C++析构函数 】C++中的“垃圾回收”机制_析构
【C/C++析构函数 】C++中的“垃圾回收”机制_析构
32 0
|
1月前
|
编译器 C++
『C++成长记』构造函数和析构函数
『C++成长记』构造函数和析构函数
|
1月前
|
存储 编译器 C语言
【C++】类和对象之构造函数、析构函数、拷贝构造函数(二)
【C++】类和对象之构造函数、析构函数、拷贝构造函数(二)
|
1月前
|
安全 C++
c++类和对象一对象特性一构造函数和析构函数
c++类和对象一对象特性一构造函数和析构函数
8 0
|
1月前
|
编译器 C语言 C++
C++构造函数,析构函数
C++构造函数,析构函数

热门文章

最新文章