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);
}