以下のコードを見て、それに関する私の質問に答えてください。
class Vector
{
public:
int x, y;
/* Constructor / destructor / Other methods */
Vector operator + (Vector & OtherVector);
Vector & operator += (Vector & OtherVector);
};
Vector Vector::operator + (Vector & OtherVector) // LINE 6
{
Vector TempVector;
TempVector.x = x + OtherVector.x;
TempVector.y = y + OtherVector.y;
return TempVector;
}
Vector & Vector::operator += (Vector & OtherVector)
{
x += OtherVector.x;
y += OtherVector.y;
return * this;
}
Vector VectorOne;
Vector VectorTwo;
Vector VectorThree;
/* Do something with vectors */
VectorOne = VectorTwo + VectorThree;
VectorThree += VectorOne;
このコードは本から抜粋したものですが、そこにはあまり説明がありません。具体的には、6行目以降のプログラムを理解できません。コンストラクターも演算子のオーバーロードもありません。演算子のオーバーロードとコピー コンストラクターがこのプログラムでどのように機能するかを説明してください。
編集:参照演算子を使用するのはなぜですか?