我有像这样的构造函数
ClassA::ClassA(void)
{
pImplClassA = new (std::nothrow) pImplClassA();
if (pImplClassA == null)
{
return;
}
}
ClassA::SomeFunc()
{
pImplClassA->SomeFunc();
}
我的问题是,如果pClassB失败,classA实例也会为null,或者在我完成此操作时它已经被实例化了。
ClassA* pClassA = new ClassA()
pClassA->SomeFunc();
不应该将pClassA设为null,因为构造函数已失败。如果不是,我仍然可以调用ClassA :: SomeFunc(),它会在那里崩溃,因为它没有实例化。
pClassA是否为空? 感谢
答案 0 :(得分:4)
失败是什么意思?如果ClassB
的构造函数抛出异常,因为你没有在ClassA
的构造函数中捕获它,就好像ClassA
的构造函数会抛出异常,所以不,不会创建对象,也不会有pClassA
。