sky*_*oor 4 c++ constructor destructor exception
我有一个关于失败的构造函数和C++中的析构函数失败的问题.
我注意到当构造函数失败时,将抛出异常.但析构函数中没有异常抛出.
我的问题是
1)如果构造函数失败,将抛出什么异常?bad_alloc的?或其他相关的?在什么情况下,构造函数会失败?成功构建的部分怎么样?
2)在什么情况下,析构函数会失败?如果没有抛出异常,析构函数会发生什么?编译器如何处理它?它被称为函数的返回值是多少?
谢谢!
任何评论都非常感谢!
如果构造函数失败,则仅在实现构造函数时抛出异常才会引发异常.(您可能需要区分内存分配和构造.使用内存分配new可能会导致std::bad_alloc异常失败.)
一般情况下,构造函数都不会失败.只有在写入时才会失败,它才会失败.如果是这样,它的失败取决于它是如何写的.通常,应该编写析构函数,以便它们不会失败,因为从析构函数中抛出异常是不安全的.(那是因为它们可能在堆栈展开期间被调用.)
请注意,您的问题中使用的"失败"通常是指运行时故障.所以编译器与它无关.此外,构造函数和析构函数都不会返回任何内容.
| 归档时间: |
|
| 查看次数: |
4368 次 |
| 最近记录: |