2014-09-02 5 views
1

Я хочу перегружать два оператора: + = и +разница между назначением соединения и оператором

что в основном разница между ними? + = только изменение текущего объекта и + возвращает новый объект?

+3

Да. 'lhs + = rhs' должен увеличивать' lhs' на 'rhs', а' lhs + rhs' должен оставить оба без изменений и вернуть результат сложения. – juanchopanza

+0

Довольно многое, что вы сказали, да. –

+1

'+ =' обычно также возвращает ссылку на измененную переменную. – zch

ответ

4

Как и вы сказали, оператор + = работает на месте (он изменяет текущий объект), а оператор + возвращает новый объект и оставляет неизменным его параметры.

Обычный способ их реализации для типа 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; 
} 
+0

отличный ответ, спасибо большое –

Смежные вопросы