Я знаю, что это хорошая идея сделать как можно большую часть интерфейса не-члена-друга, а также я понял, что для моего класса 3D-векторов, 'Vector3', я могу переместить операторы + =, = = и т. Д. Из класса, оставив только конструкторы и оператор присваивания копий.Каноническая форма оператора + = для классов
Вопрос в том, как должен выглядеть этот оператор? Я видел канонические формы множества других операторов и следовал их советам, но я не видел канонических форм этих операторов. Я дал то, что, как я думаю, должно быть ниже.
Вопрос вторичный: что называют эти операторы? Арифметические операции присваивания?
The (необходимо) код перед:
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;
}
Поскольку вы просили их имя: Они называются операторы составного присваивания –