Cuando tu haces herencia public los métodos y datos public y protected se "copian" en la clase derivada, pero la clase derivada también tiene acceso a la clase base.
Cuando tu redefines el método redefines dicha "copia" por lo que la copia es cambiada pero el método base sigue siendo igual. Te dejo aquí un ejemplo para que lo comprendas:
Código C++:
Ver original#include <iostream>
using namespace std;
class Base {
public:
virtual void f() {
cout << "soy la base";
}
virtual void g(){
cout << "Blablablabla no me vas a usar";
}
virtual void h() {
cout << "Accedo al h de la base.\n";
}
};
class Derivada: public Base{
public:
void f(){
cout << "Yo no ";
Base::f();
cout << ", pero puedo llamar a métodos de la clase de la que heredo" << endl;
}
void g(){
cout << "Pero tambien puedo redefinir metodos que no necesitan de la base"<< endl;
}
void h(){
cout << "Accedo al h de la derivada." << endl;
}
};
int main(){
Derivada A;
A.f();
A.g();
A.h();
A.Base::h();
}