この新しいオブジェクト を作成するvと、まったく新しいオブジェクトになりますか、それとも単に によって参照される同じオブジェクト空間になります*thisか?
Vector2 v = *this;
実際に新しいオブジェクトを作成しているとは思いませんが、このコードがconst. vしたがって、このオブジェクトは、実際には完全に とは別のメモリ空間であると予想されます*this。
この新しいオブジェクト を作成するvと、まったく新しいオブジェクトになりますか、それとも単に によって参照される同じオブジェクト空間になります*thisか?
Vector2 v = *this;
実際に新しいオブジェクトを作成しているとは思いませんが、このコードがconst. vしたがって、このオブジェクトは、実際には完全に とは別のメモリ空間であると予想されます*this。
はい、新しいオブジェクトを作成していますが、割り当てではなく初期化によって作成されています。
ただし、参照を使用することでそれをバイパスできますVector2& v = *this;。この場合、は(メソッドが の場合は)vのエイリアスです。*thisconst Vector& v = *thisconst
これの理由はまさにあなたが述べたものです.これが起こる方法constは.*thisconst
メソッド内にいると仮定すると、使用しているVector2この演算子は、理由からコピー代入=と呼ばれます。ここで、ディープ コピー、シャロー コピー (ポインターをコピーしますが、ポインターが指すオブジェクトはコピーしません) を実行するかどうかは、オペレーターの実際の実装に依存します。
はい、vは のまったく新しいオブジェクト*thisです。