私はこのコンストラクターを見ました:
MyClass(class MyOtherClass* = 0) {}
class
キーワードはどういう意味ですか?コンストラクターはポインターを受け取りMyOtherClass
、引数をnullポインターにデフォルト設定しますか?
私はこのコンストラクターを見ました:
MyClass(class MyOtherClass* = 0) {}
class
キーワードはどういう意味ですか?コンストラクターはポインターを受け取りMyOtherClass
、引数をnullポインターにデフォルト設定しますか?
これは前方宣言です。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
};