0

私はこのようなコンストラクタを持っています

    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 は null でしょうか? ありがとう

4

1 に答える 1

4

失敗とはどういう意味ですか?'コンストラクターが例外をスローした場合、 'コンストラクターでClassBそれをキャッチしていないため、 'コンストラクターが例外をスローするかのようになります。したがって、オブジェクトは作成されず、話すこともできません。ClassAClassApClassA

于 2012-08-03T05:57:22.787 に答える