c++ - method - virtual cpp
Diferencia entre redefinir y anular una función. (2)
Supongamos que tengo clase A con una función virtual F() :
class A
{
virtual void F()
{
// Do something
};
};
Y tengo otra clase B que hereda A y redefine F() :
class B : A
{
void F()
{
// Do something
};
};
Y una clase C diferente que también hereda A pero reemplaza F() :
class C : A
{
void F() override
{
// Do something
};
};
¿Cuál es la diferencia entre F() en las clases B y C ?
Ambos son anulaciones.
Cuando se usa la override la palabra clave, se asegura un error de compilación si no es una anulación.
Y eso es una buena práctica.
Tanto B::f() como C::f() son anulaciones y son exactamente iguales.
override es esencialmente un término de consulta en tiempo de compilación que causará un error de compilación si la función no reemplaza a uno en una clase base.
Esto puede ayudar a la estabilidad del programa: si se cambian los tipos de nombre y parámetro a A::f() , se producirá un error de compilación.