Polymorphism is in short the ability to call different functions by just using one
type of function call. It is a lot useful since it can group classes and their
functions together. Polymorphism means that the same thing can exist in two forms.
This is an important characteristic of true object oriented design - which means
that one could develop good OO design with data abstraction and inheritance, but
the real power of object oriented design seems to surface when polymorphism is used.
In C++, polymorphism means that if the same message is sent to different objects,
the object’s behavior depends on the nature of the object itself. This is sort of
obvious for completely different objects, but the concept starts making sense when
combined with inheritance.