Although the prototype of a function operator+ can seem obvious since it takes what is at the right side of the operator as the parameter for the operator member function of the object at its left side, other operators may not be so obvious.
Here you have a table with a summary on how the different operator functions have to be declared
(replace @ by the operator in each case):