0

我有一个这样的构造函数

    ClassA::ClassA(void)
    {
       pImplClassA = new (std::nothrow) pImplClassA();
       if (pImplClassA == null)
       {
         return;
       }
    }
    ClassA::SomeFunc()
    {
      pImplClassA->SomeFunc();
    }

我的问题是,如果 pClassB 失败,classA 实例是否也会为空,或者当我这样做时它已经实例化了。

  ClassA* pClassA = new ClassA()
    pClassA->SomeFunc();

pClassA 不应该为 null,因为构造函数失败了。如果不是,我仍然可以调用 ClassA::SomeFunc() 并且它会在那里崩溃,因为它没有被实例化。

pClassA 是否为空?谢谢

4

1 回答 1

4

你说的失败是什么意思?如果ClassB' 的构造函数抛出异常,因为你没有在ClassA' 的构造函数中捕获它,就好像ClassA' 的构造函数会抛出异常,所以不,不会创建对象,也没有什么pClassA可说的。

于 2012-08-03T05:57:22.787 回答