Operator overloading is a powerful feature of object orientation that
allows you to integrate your new classes into programs in a natural way.
Operator overloading is always based on the definition of some special
methods, that have the typical __<name>__()
structure.