问题描述
- C++的构造函数可以抛出异常么
-
如题,C++的构造函数可以抛出异常么,如果有异常,除了资源泄露之外,还会引起其他问题么?
解决方案
构造函数丢出异常不等于说就一定资源泄露。构造函数丢出异常很正常,无法构造对象,或者构造函数的参数不合法,就应该丢出异常,试想,一个表示日期的类,你传入
2015-13-34 它还能构造成功,那危害性一点不小于资源泄露。
解决方案二:
你编码了什么异常,它就有什么异常,如指针越界、功能异常等
解决方案三:
构造函数抛出异常会导致西沟函数不会调用,就会可能资源泄露。所以最好不要这么做。
解决方案四:
可以抛出异常,只不过要特别注意有没有资源泄露。
可以这样认为:构造函数不抛出异常,不能保证一定没有资源泄露;反过来,抛出异常,也未必一定资源泄露。一切都取决于整个代码的逻辑的严密性。
时间: 2024-09-08 10:19:10