Я хочу перегружать два оператора: + = и +разница между назначением соединения и оператором
что в основном разница между ними? + = только изменение текущего объекта и + возвращает новый объект?
Я хочу перегружать два оператора: + = и +разница между назначением соединения и оператором
что в основном разница между ними? + = только изменение текущего объекта и + возвращает новый объект?
Как и вы сказали, оператор + = работает на месте (он изменяет текущий объект), а оператор + возвращает новый объект и оставляет неизменным его параметры.
Обычный способ их реализации для типа T
выглядит следующим образом:
// operator+= is a member function of T
T& T::operator+=(const T& rhs)
{
// perform the addition
return *this;
}
// operator+ is a free function...
T operator+(T lhs, const T& rhs)
{
// ...implemented in terms of operator+=
lhs += rhs;
return lhs;
}
отличный ответ, спасибо большое –
Да. 'lhs + = rhs' должен увеличивать' lhs' на 'rhs', а' lhs + rhs' должен оставить оба без изменений и вернуть результат сложения. – juanchopanza
Довольно многое, что вы сказали, да. –
'+ =' обычно также возвращает ссылку на измененную переменную. – zch