「C++で考える」の第13章を読んでいます。以下は本から来ています。
MyType * fp = new MyType(1、2);
実行時に、malloc(sizeof(MyType))に相当するものが呼び出され、引数リストとして(1、2)を使用して、結果のアドレスをthisポインターとしてMyTypeのコンストラクターが呼び出されます。ポインタがfpに割り当てられるまでに。
大胆な文章に戸惑います。どういう意味ですか?
「C++で考える」の第13章を読んでいます。以下は本から来ています。
MyType * fp = new MyType(1、2);
実行時に、malloc(sizeof(MyType))に相当するものが呼び出され、引数リストとして(1、2)を使用して、結果のアドレスをthisポインターとしてMyTypeのコンストラクターが呼び出されます。ポインタがfpに割り当てられるまでに。
大胆な文章に戸惑います。どういう意味ですか?
これは非常に大まかな説明ですが、基本的には、結果がmalloc
戻るのと同じようにメモリの場所であり、そのメモリの場所で、this
その引数リストを持つコンストラクタを使用してオブジェクトが構築されます(現在のオブジェクトへのポインタです)。
演算子がメモリを動的に割り当てると、new
そのメモリへのポインタが返されます(malloc()
Cでの動作と同様)。
C ++では、すべての非静的メソッドが、呼び出されている現在のオブジェクトにアクセスできます(そうでない場合、世界中のC ++プログラマーは深刻な問題に直面します)。これは、コンストラクターでもメソッドの「暗黙の引数」であり、キーワードを介してアクセスできますthis
。
この文の意味するところは、オブジェクトを作成した後、オペレーターは割り当てたばかりのメモリーでコンストラクターを呼び出すということです。これが理にかなっている唯一のものだからです。:)