Overloading w/ Virtual Funct.
Dynamic binding can be used with overloaded operators
as well as conversion functions.
All that is necessary is to declare the overloaded operators
to be virtual in a direct or indirect base class just like we
do for regular member functions.
Functions and overloaded operators that cannot be
implemented as members can benefit from dynamic
binding by invoking a virtual member function that
actually performs the required operation.
When this is done, such functions are called “virtual”
friends (although this is a misleading term!).