Например, если я перегрузил оператор +
myClass & operator + (const myClass & rhs)
а также перегружен = оператор
myClass & operator = (const myClass & rhs)
оба оператора работают нормально. Могу ли я использовать этот перегруженный оператор в своей перегрузке оператора +=?
myClass & operator += (const myClass & rhs){
*this = *this + progA;
return *this;
}
Приведенный выше код работает нормально. Я просто хочу знать, является ли это хорошей практикой написания кода, или мне следует повторно использовать код из двух предыдущих реализаций для перегрузки оператора +=.
operator+
реализовано с точки зренияoperator+=
. - person François Andrieux   schedule 04.04.2018operator@
реализовано с использованиемoperator@=
, потому что это может быть более эффективным. Часто@=
может быть более эффективным, чем обычный@
. - person Justin   schedule 04.04.2018*this + progA
придется создать временный экземплярmyClass
, который не должен быть строго необходим для реализацииoperator+=
. Если вы реализуетеoperator+=
напрямую и вместо этого изменитеoperator+
, чтобы он ссылался наoperator+=
(сделайте копию*this
и вызовитеoperator+=
для этой копии, которую вы вернете), вы можете получить более эффективную реализацию. - person François Andrieux   schedule 04.04.2018