【发布时间】:2012-04-30 01:38:22
【问题描述】:
在 C++ 中,如果构造函数抛出异常,会运行哪些析构函数?
特别是,如果异常发生在初始化列表或正文期间,有什么区别吗?
另外,继承和成员呢?大概所有已完成的建筑都会被摧毁。如果只构造了一些成员,那么只有那些成员会被破坏吗?如果存在多重继承,是否所有已完成的构造函数都会被破坏?虚拟继承会改变什么吗?
【问题讨论】:
-
有什么原因你没有自己测试这个吗?
-
@Steve:因为如果您想要可移植或可维护的代码,那么依赖一个特定编译器版本的行为是一个糟糕的主意。
-
@BenVoigt - 我在理论上同意。但是当你在现实世界中编码时,你必须处理现实。如果所有主要编译器都没有做到这一点,我会感到非常惊讶。
标签: c++ constructor exception-handling destructor