Overloaded member functions are selected to be invoked by a type matching algorithm that includes having the implicit argument matched to an object of that class type. All of this is known at compile-time and allows the compiler to select the appropriate member directly. It would be nice to dynamically select at run-time the appropriate member function from among base and derived class functions.
Virtual functions are functions declared in the base class and overloaded in a derived class.
The selection of which member functions to invoke among a group of overloaded virtual functions is dynamic.