构造函数中可不可以抛出异常?析构函数呢?

在C++中,构造函数抛出异常是安全的,因为new运算符的实现确保了内存不会泄漏。然而,析构函数抛出异常是不推荐的,因为这可能导致在异常处理期间调用析构函数时程序终止。如果必须从析构函数抛出异常,应先检查当前是否有未处理的异常。
摘要由CSDN通过智能技术生成

构造函数中可不可以抛出异常?析构函数呢?

 

首先,从语法上来说,二者都是没有问题的。但没有语法问题不表明不存在逻辑问题

引用http://hi.csdn.net/zhangyanli的帖子:


构造函数:
无论何时,从构造函数中抛出异常都是安全的。镜头创建的对象没有什么问题,关键是动态创建对象的异常处理。动态创建对象要进行两个操作,分配内存,调用构造函数初始化。若分配内存失败,则会抛出bad_alloc异常,是安全的。若内存分配成功,但是在调用构造函数时抛出了异常,会不会造成内存泄漏呢?

new运算符的实现保证了内存泄漏不会发生。例如

T *p = new T;

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值