【发布时间】:2013-12-22 05:25:49
【问题描述】:
我有这样的代码:
class myclass
{
myclass()
{
// doing some init here
}
~myclass()
{
// doing some important clean up here
}
void Do()
{
// doing some work which may throw exception
}
}
我就是这样使用这个类的:
MyFunction()
{
myclass mc;
mc.do();
}
我的问题是:
如果do函数出现异常,会发生什么?是否调用了 myclass 的析构函数?
如果不是,处理此类情况的最佳方法是什么?假设我没有源代码,并且我确信析构函数中发生了什么。
【问题讨论】:
-
C++ 保证会调用析构函数,所以你不必担心。
-
好问题。已经回答了。
-
@FrédéricHamidi:仅在处理异常时。
-
@FrédéricHamidi:确实;因此,一般不保证。 (抱歉,我的意思是“只保证”,而不是“只叫”——我应该更具体些)。