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