Hola!
Hago esta pregunta desde la ignorancia, entiendo que virtual/override ayuda mucho a no tener que redefinir trozos de codigo de una función, sin embargo no entiendo cual es el fin de las funciones virtuales puras, es decir, no implementan nada, solo veo que ocupan un espacio en el archivo de cabecera, al fin y al cabo de todas formas tendrás que volver a declararlas y definirlas en las subclases como override...
class A{
protected:
virtual void hacer_algo() = 0; //Esto me parece que estuviera de más.....
//otras cosas..
};
class B : public A{
protected:
void hacer_algo() override; //.... si aqui tengo que estar escribiendolo nuevamente.
};
Por qué no directamente?:
class A{
protected:
//otras cosas
};
class B : public A{
protected:
void hacer_algo();
};
Dog, por ejemplo en java, el @Override se usa en herencia, con subClases de clases abstractas e interfaces, el patrón template, hay un ejemplo donde, el método por ejemploabstract void pintar
(String color
);
Es invocado en la misma clase abstracta, pero por obligatoriedad debe ser declaro en la subClase y con @Override(aun sin tener nada dentro de su scope(alcance) llaves Lmao), a simple vista pareciera que no hace nada(en dicha subClase), pero cuando la clase abstracta se ejecuta por medio de la subclase, este método pintar se invoca virtualmente por la JVM.