构造函数中可不可以抛出异常?析构函数呢?
首先,从语法上来说,二者都是没有问题的。但没有语法问题不表明不存在逻辑问题
引用http://hi.csdn.net/zhangyanli的帖子:
构造函数:
无论何时,从构造函数中抛出异常都是安全的。镜头创建的对象没有什么问题,关键是动态创建对象的异常处理。动态创建对象要进行两个操作,分配内存,调用构造函数初始化。若分配内存失败,则会抛出bad_alloc异常,是安全的。若内存分配成功,但是在调用构造函数时抛出了异常,会不会造成内存泄漏呢?
new运算符的实现保证了内存泄漏不会发生。例如
T *p = new T;