Si tengo en C++:C++ Implementación de funciones virtuales?
class A {
private: virtual int myfunction(void) {return 1;}
}
class B: public A {
private: virtual int myfunction(void) {return 2;}
}
Entonces si quito virtual
de la definición myfunction
en class B
, ¿significa que si tuviera un class C
basado en class B
, que no podía anular el myfunction
ya que sería compilado estáticamente?
Además, estoy confundido en cuanto a lo que sucede cuando se cambia entre público y privado aquí. Si cambio la definición de myfunction
en class B
para que sea pública (y la de class A
permanece en privado), ¿es esto algún tipo de error grave que no debo hacer? Creo que las funciones virtuales necesitan mantener el mismo tipo, eso es ilegal, pero por favor, avísennos si eso está mal.
Gracias!
no es necesario escribir explícitamente palabra clave "virtual" para los métodos de clase derivados. puedes omitirlo, pero es un buen estilo tenerlo. – varnie