No entiendo exactamente tu pregunta.
En C++ tambien puedes hacer overides. Hay 2 formas.
En la sencilla. Tienes una clase base con un método.
Cuando creas una clase hija, sólo vuelves a implementar el método que quieres anular. Al final, si usas la clase base, usas el método de la clase base, si usas la hija, se usa el método de la clase hija.
La segunda es por medio de polimorfismo. Tienes tu clase case, pero el método lo declaras virtual.
En la clase hija, lo reimplementas y listo (no es necesario volver le a poner virtual a menos que la clase hija tenga su propia clase hija y quiera implementar el método de forma diferente).
Código C++:
Ver originalclass Padre
{
virtual void mi_metodo()
{
std::cout << "Hola padre\n";
}
};
class Hijo : public Padre
{
void mi_metodo()
{
std::cout << "Hola hijo\n";
}
};
class Nieto : public Hijo
{
void mi_metodo()
{
std::cout << "Hola nieto\n";
}
};
En ese ejemplo. Un puntero o una referencia tipo Padre puede apuntar a objetos tipo Hijo o Nieto. Si desde ese puntero o referencia mandas llamar a mi_metodo(), tendras comportamientos diferentes
Código C++:
Ver originalPadre *p;
p = new Padre();
p->mi_metodo(); // Imprime Hola Padre
p = new Hijo();
p->mi_metodo(); // Imprime Hola Hijo
p = new Nieto();
p->mi_metodo(); // Imprime Hola Hijo creo..... jajaja
Si al metodo de Hijo le pusieramos virtual, entonces daría el mensaje correcto.
Finalmente. En C++11 puedes usar overide para decirle al compilador de manera explicita que lo que quieres es anular el método padre, (como en java). Mas que nada sirve por si nos equivocamos al escribir mal el nombre o los parametros del método.
Código C++:
Ver originalclass Hijo : public Padre
{
void mi_metodo() override
{
std::cout << "Hola hijo\n";
}
};