これを理解するには、コードから始めるのが最善です
#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
とHello2
例外がスローされた場合、それは segfault . ただし、追加すると
Hello h = NULL;
できます!!!
Hello は、例外をスローするコンストラクタを持つクラスです
私が考えることができるのは、コンストラクターの例外がメモリからオブジェクトを削除することだけです! なぜどこで誰が...説明してください!お願いします。