There are binary operators and unary operators. I am a little confused about the parameters and the return value of operators. For instance "+" takes two arguments right? The left operand and the right operand and the value returned is usually assigned to a variable. Hmm this makes a little sense but what about the "+=" operator. This takes two arguments also? Where does the return value go?

An example from the book I'm reading.

Code:
 
class String { 
         friend const String &operator+=( String &, const String & );
The += operator is being overloaded to concatenate two strings. The operand on the left is going to be modified so I understand why its declared const but I don't understand why the function is returning a const reference to a string. Where does the return value go anyway?