C++ uses references in many places
 
 
… that’s why we did this detour. Consider this
is conceptually the same as
obj2.operator= (const SomeObject &obj1);
obj2.operator= (const SomeObject &obj1);
obj2 (const &obj1);    // “copy constructor”
obj3 = SomeObject.operator+ ( const &obj1, const &obj2);
End of detour - let’s now get back to our operators. 
the compiler does this with a reference
If you want to deal with operators, you have to understand the object references.