One of the examples (закидать сразу помидорами?):
Обратите внимание, передача через параметр, т.е. создаётся ещё один экземпляр класса, существующий в рамках только оператора присваивания
Теперь пример через ссылку (рассмотрены операторы + и +=, передача по ссылке):
class Watch{ public: int x,y; Watch operator+ (const Watch& w)const; Watch& operator+= (const Watch& w); Watch(); Watch(int x, int y); }; Watch::Watch(){ // конструктор по умолчанию this->x = 0; this->y = 0; }
inline Watch::Watch(int x, int y){ // альтернативный конструктор this->x = x; this->y = y; } Watch& Watch::operator+=(const Watch& w){ // Переопределение оператора += x += w.x; y += w.y; return * this; }
Watch Watch::operator+(const Watch& w)const{ return Watch(x + w.x, y + w.y); }