Too Long; Didn't Read
Polymorphism is the ability (in programming) to present the same interface for differing underlying forms (data types) in C++. C++ support both Dynamic and Static polymorphism. Dynamic polymorphism means the type of the object is not known at compile time ( maybe based on user input, etc), and thus the compiler adds extra data structure to support this. Static Polymorism can be used when one wants their own Expression Template Library. The C++ standard doesn't dictate on how it should be implemented, so we will brush aside all the discussion on dynamic polymorphism.