Une fonction d'une classe dérivée n'est pas dans le même portée qu'une fonction de même nom dans la classe de base et donc il ne peut y avoir de surcharge dans ce cas.
class base{ public: void f(); }; class derivee: public base{ public: int f(int); };la déclaration
derivee::f
occulte la déclaration
base::f
: il n'y a donc pas de surcharge, et si
d
est un objet de classe derivee
, on ne
pourra avoir d'appel d.f()
mais par contre on peut
avoir un appel d.base::f()
.