5

私はこのコンストラクターを見ました:

MyClass(class MyOtherClass* = 0) {}

classキーワードはどういう意味ですか?コンストラクターはポインターを受け取りMyOtherClass、引数をnullポインターにデフォルト設定しますか?

4

1 に答える 1

10

これは前方宣言です。MyOtherClassこのコンテキストで使用する前に定義する必要はないため、前方宣言で十分です。は=0引数のデフォルト値です。

完全な定義が必要ない場合のブレインダンプ:

  • メンバーポインタ
  • メンバー参照
  • メソッドパラメータタイプ
  • メソッドの戻り型

以下を比較してください。

//MyClass.h
class MyClass
{
    MyClass(MyOtherClass* = 0) {} //doesn't compile
                                  //doesn't know what MyOtherClass is
};

//MyClass.h
class MyClass
{
    MyClass(class MyOtherClass* = 0) {} //compiles, MyOtherClass is declared
};

//MyClass.h
class MyOtherClass;   //declare MyOtherClass
class MyClass
{
    MyClass(MyOtherClass* = 0) {} //compiles, declaration available
};
于 2012-10-10T14:35:45.680 に答える