online method functions cpp c++ c++11 override virtual virtual-functions

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.