Quote Originally Posted by GCDEF
That's not polymorphism. Polymorphism means that the correct function will be called based on the object type. Arguments in the based and derived classes have to be the same and the function has to be declared virtual in the base class.

Overloading is when you have functions with the same name but different types.
Overloading is polymorphism: ad-hoc polymorphism; what you stated is supertype/subtype polymorphism.