c++构造和析构能不能抛异常的问题!
来源:互联网 发布:数据库订单管理模板 编辑:程序博客网 时间:2024/05/16 14:31
总结:
1、析构函数中不允许抛异常。
2、构造函数中可以抛异常(但不建议)。构造函数中尽量不要抛异常或调用可能会抛异常的代码,如果必须要抛异常,要考虑处理内存泄漏。
之所以不建议抛异常是因为考虑到内存泄漏,因为构造函数抛异常会导致析构不能被调用;假如,设计者的设计思路是构造申请动态内存,析构释放动态内存。当构造函数中成功申请了内存,但在申请内存的下一段代码抛异常,这时析构不被调用也就不能释放内存,从而导致了内存泄漏。
非要抛异常的解决办法(针对上述例子):当申请动态内存(用P指代)成功后的下一段代码抛异常的时候释放主动释放该段内存(p)。
0 0
- c++构造和析构能不能抛异常的问题!
- c++构造和析构能不能抛异常的总结!
- 构造函数和析构函数能不能被继承
- C++中, 构造函数和析构函数能不能被显示调用?
- C++中, 构造函数和析构函数能不能被显示调用?
- C++中, 构造函数和析构函数能不能被显示调用?
- C++中构造函数和析构函数能不能被显示调用?
- C++中, 构造函数和析构函数能不能被显示调用?
- 能不能在构造函数和析构函数中调用虚函数?
- 构造函数、析构函数抛出异常的问题
- 构造函数、析构函数抛出异常的问题
- 构造函数、析构函数抛出异常的问题
- 构造函数、析构函数抛出异常的问题
- 关于构造函数析构函数和异常的一点点
- C++【子类的构造和析构】
- 构造函数与析构函数能不能继承?
- c语言中构造函数和析构函数抛出异常
- C/C++——构造函数、复制构造函数和析构函数的执行时刻
- POJ 1200
- CocoaPods安装和使用
- Ubuntu14.04安装Samba实现文件共享
- hdu 2191
- Codeforces Round #362 (Div. 2) B. Barnicle(乱搞)
- c++构造和析构能不能抛异常的问题!
- OSG3.5.1 + Qt5.4.2 + VS2010 + CMake3.4.3 安装说明
- SQLyog客户端 导入sql文件乱码的解决方法
- perl 处理文本
- POJ 1915 Knight Moves(BFS)
- android studio 使用常见问题
- mysql写类似 select top x * from
- 基础变换:初识向量/矩阵
- Yii2 使用scenarios