Cuando se declara un método como virtual
en una clase, sus reemplazos en las clases derivadas se consideran automáticamente virtual
también, y el lenguaje C++ hace que esta palabra clave virtual
opcional en este caso:¿Por qué es 'virtual' opcional para los métodos reemplazados en las clases derivadas?
class Base {
virtual void f();
};
class Derived : public Base {
void f(); // 'virtual' is optional but implied.
};
Mi pregunta es: ¿Qué ¿El fundamento para hacer virtual
es opcional?
Sé que no es absolutamente necesario que se lo diga al compilador, pero creo que los desarrolladores se beneficiarían si el compilador aplicara tal restricción.
P. ej., Cuando leo el código de otros me pregunto si un método es virtual y tengo que rastrear sus superclases para determinarlo. Y algunos estándares de codificación (Google) lo convierten en un 'obligatorio' para poner la palabra clave virtual
en todas las subclases.
Creo que le gustaría eliminar '= 0' de' NonVirtualBase' :) –
@Matthieu - ¡buena captura! Hoy tengo bastante sueño xD –