Operator overloading can make your code more intuitive and enable it
to act more like the built-in types. It can also make your code
unmanageable, complex, and obtuse if you break the common idiom for
the use of operators. Resist the temptation to use operators in new
and idiosyncratic ways.
For example, although it might be tempting to overload the increment
operator (++) on an employee class to invoke a
method incrementing the employee's pay level, this
can create tremendous confusion for clients of your class. It is best
to use operator overloading sparingly, and only when its meaning is
clear and consistent with how the built-in classes operate.