"You will notice that the + operator returns a const instance, not a const reference. This is so that people can't write strange statements like this:

  MyClass a, b, c;
  ...
  (a + b) = c;   // Wuh...?
This statement would basically do nothing, but if the + operator returns a non-const value, it will compile! So, we want to return a const instance, so that such madness will not even be allowed to compile."