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.