您的位置:首页 > 编程语言 > C语言/C++

c++构造和析构能不能抛异常的问题!

2016-07-15 16:45 169 查看
总结:

1、析构函数中不允许抛异常。

2、构造函数中可以抛异常(但不建议)。构造函数中尽量不要抛异常或调用可能会抛异常的代码,如果必须要抛异常,要考虑处理内存泄漏。

之所以不建议抛异常是因为考虑到内存泄漏,因为构造函数抛异常会导致析构不能被调用;假如,设计者的设计思路是构造申请动态内存,析构释放动态内存。当构造函数中成功申请了内存,但在申请内存的下一段代码抛异常,这时析构不被调用也就不能释放内存,从而导致了内存泄漏。

非要抛异常的解决办法(针对上述例子):当申请动态内存(用P指代)成功后的下一段代码抛异常的时候释放主动释放该段内存(p)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: