一个简单的异常问题(《深度探索C++对象模型》)!
class CTest
{
public:
CTest();
~CTest();
public:
};
CTest::CTest()
{
cout<<"CTest"<<endl;
}
CTest::~CTest()
{
cout<<"~CTest"<<endl;
}
class CTestException
{
public:
CTestException()
{
std::auto_ptr<CTest> pTest(new CTest);
throw 23;
cout<<"cannot arrive"<<endl;
}
};
void fun()
{
CTestException Throw;
cout<<"in fun"<<endl;
}
int main(int argc, char* argv[])
{
fun();
return 0;
}
在这个例子中,是否有内存没有被释放问题?
如果没有,那么为什么CTest的析构函数没有被调用?
如果有,这与许多书上写的意思相互矛盾。如《深度探索C++对象模型》p302(也许是我的理解有问题。)
cout<<"cannot arrive"<<endl;是不被执行的。相信大家没有什么意见。
cout<<"in fun"<<endl;被执行,可能大家没有意见,但和《深度探索C++对象模型》的p303是不是有些不一致?