3

「C++で考える」の第13章を読んでいます。以下は本から来ています。

MyType * fp = new MyType(1、2);

実行時に、malloc(sizeof(MyType))に相当するものが呼び出され、引数リストとして(1、2)を使用して、結果のアドレスをthisポインターとしてMyTypeのコンストラクターが呼び出されます。ポインタがfpに割り当てられるまでに。

大胆な文章に戸惑います。どういう意味ですか?

4

2 に答える 2

5

これは非常に大まかな説明ですが、基本的には、結果がmalloc戻るのと同じようにメモリの場所であり、そのメモリの場所で、thisその引数リストを持つコンストラクタを使用してオブジェクトが構築されます(現在のオブジェクトへのポインタです)。

于 2013-02-12T21:51:53.950 に答える
4

演算子がメモリを動的に割り当てると、newそのメモリへのポインタが返されます(malloc()Cでの動作と同様)。

C ++では、すべての非静的メソッドが、呼び出されている現在のオブジェクトにアクセスできます(そうでない場合、世界中のC ++プログラマーは深刻な問題に直面します)。これは、コンストラクターでもメソッドの「暗黙の引数」であり、キーワードを介してアクセスできますthis

この文の意味するところは、オブジェクトを作成した後、オペレーターは割り当てたばかりのメモリーでコンストラクターを呼び出すということです。これが理にかなっている唯一のものだからです。:)

于 2013-02-12T21:53:38.927 に答える