Можете ли вы объяснить мне разницу между возвращаемым значением, ссылкой на значение и константой ссылки на значение?
Значение:
Vector2D operator += (const Vector2D& vector)
{
this->x += vector.x;
this->y += vector.y;
return *this;
}
Неконстантная ссылка:
Vector2D& operator += (const Vector2D& vector)
{
this->x += vector.x;
this->y += vector.y;
return *this;
}
Ссылка на константу:
const Vector2D& operator += (const Vector2D& vector)
{
this->x += vector.x;
this->y += vector.y;
return *this;
}
В чем преимущество этого? Я понимаю, что смысл ссылки на const ссылается на функцию, так как вы хотите не изменять это значение, на которое ссылается ссылка внутри функции. Но я смущен значением возвращаемой ссылки const. Почему возвращение ссылки лучше, чем возврат значения, и почему возвращение ссылки const лучше, чем возврат ссылки not-const?