クラスの非メンバー非友人のインターフェースをできるだけ多くするのは良い考えだと知っています。そして、私の3Dベクトルクラス「Vector3」では、+=を移動できることに気づきました。 -=など、クラス外の演算子。コンストラクターとコピー代入演算子のみを残します。
問題は、この演算子はどのように見えるべきかということです。私は他の多くの演算子の標準形を見てきましたし、彼らのアドバイスに従いましたが、これらの演算子の標準形を見たことがありません。私はそれが下にあるべきだと思うものを与えました。
二次的な質問は、これらの演算子は何と呼ばれているのかということです。算術代入演算子?
前の(関連する)コード:
class Vector3 {
public:
Vector3& operator+=(const Vector3& rhs);
float x, y, z;
};
Vector3& Vector3::operator+=(const Vector3 &rhs) {
x += rhs.x;
y += rhs.y;
z += rhs.z;
return *this;
}
これまでに変更したもの:
class Vector3 {
public:
float x, y, z;
};
Vector3& operator+=(Vector3& lhs, const Vector3& rhs) {
lhs.x += rhs.x;
lhs.y += rhs.y;
lhs.z += rhs.z;
return lhs;
}