Understanding the Syntax
This declaration allows us to apply the subtraction
operator to two objects of the same class and returns an
object of that class as an rvalue.
The italics represent my recommendations, if followed,
result in behavior that more closely matches that of the
built-in types.
Since the predefined behavior of the subtraction operator
does not modify its two operands, the formal arguments of
the operator- function should be specified either as
constant references or passed by value.