Dynamic Binding
Dynamic binding occurs when a pointer or reference is
associated with a member function based on the dynamic
type of the object.
The dynamic type of an object is the type of the object
actually pointed or referred to rather than the static type of
its pointer or reference.
The member function that is dynamically bound must
override a virtual function declared in a direct or indirect
base class.
Since dynamic binding occurs at run time, it is also called
run time binding.