最好从代码开始了解这一点
#include "Hello1.h"
#include "Hello2.h"
int main(int argc, char ** argv)
{
// Hello1 and Hello2 are derevied classes of Hello
// And there constructor throws an exception
Hello * h;
try
{
if (argv[1][0]=='1')
h = new Hello1;
else
h = new Hello2;
}
catch (std::exception ex) { /*print error*/ }
delete h;
}
如果Hello1
andHello2
抛出异常, It segfault。但是,如果我添加
Hello h = NULL;
有用!!!
Hello 是一个带有抛出异常的构造函数的类
我能想到的就是构造函数中的异常从内存中删除对象!为什么在哪里谁...解释!请。