Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна
 

One of the examples (закидать сразу помидорами?):

code operator + overloading

Обратите внимание, передача через параметр, т.е. создаётся ещё один экземпляр класса, существующий в рамках только оператора присваивания

Теперь пример через ссылку (рассмотрены операторы + и +=, передача по ссылке):

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