在C ++中,我们不应该在析构函数中抛出异常。这段代码是否按预期工作?
struct a
{
~a( ) { }
};
struct b : public a
{
~b( )
{
throw 1;
};
};
bool c( )
{
a* d=new b;
try
{
delete d;
}
catch( int e )
{
return e;
}
return false;
}
答案 0 :(得分:0)
此代码是否按预期工作?
你自己尝试过运行吗?还要看看this FAQ - 根据它,是的,它会在你的简单案例中起作用,但总的来说,你不应该这样做。同样,它取决于你如何定义“按预期工作” - 程序将运行没有错误,但你可能会泄漏内存,因为对象没有被释放。