it returns a const reference because you are not supposed to write
Counter c;
++++c;
If the returned reference is const, this will result in a compiler error as it should be.
Also, you are not supposed to write:
++c = ...;
The result of both pre- and postfix increment/decrement operators are NOT L-values.