2

この新しいオブジェクト を作成するvと、まったく新しいオブジェクトになりますか、それとも単に によって参照される同じオブジェクト空間になります*thisか?

Vector2 v = *this;

実際に新しいオブジェクトを作成しているとは思いませんが、このコードがconst. vしたがって、このオブジェクトは、実際には完全に とは別のメモリ空間であると予想されます*this

4

3 に答える 3

5

はい、新しいオブジェクトを作成していますが、割り当てではなく初期化によって作成されています。

ただし、参照を使用することでそれをバイパスできますVector2& v = *this;。この場合、は(メソッドが の場合は)vのエイリアスです。*thisconst Vector& v = *thisconst

これの理由はまさにあなたが述べたものです.これが起こる方法constは.*thisconst

于 2012-12-17T09:21:39.263 に答える
1

メソッド内にいると仮定すると、使用しているVector2この演算子は、理由からコピー代入=と呼ばれます。ここで、ディープ コピー、シャロー コピー (ポインターをコピーしますが、ポインターが指すオブジェクトはコピーしません) を実行するかどうかは、オペレーターの実際の実装に依存します。

于 2012-12-17T09:24:51.377 に答える
0

はい、vは のまったく新しいオブジェクト*thisです。

于 2012-12-17T09:22:24.330 に答える