In object-oriented programming, polymorphism is a generic term that means 'many shapes'.
(from the Greek meaning "having multiple forms"). Polymorphism is briefly described as "one interface, many implementations."
polymorphism is a characteristic of being able to assign a different meaning or usage to something
in different contexts - specifically, to allow an entity such as a variable, a function,
or an object to have more than one form.
There are two types of polymorphism
1) compile time polymorphism
Compile time polymorphism is functions and operators overloading.
2) Run time polymorphism.
Runtime time polymorphism is done using inheritance and virtual functions.