Operator Overloading
It is similar to overloading functions
except the function name is replaced by the
keyword operator followed by the operator’s
symbol
the return type represents the type of the
residual value resulting from the operation
rvalue?     -lvalue?
allowing for “chaining” of operations
the arguments represent the 1 or 2 operands
expected by the operator