2011-10-13 23 views

Respuesta

21

En C++ si declara un método virtual en la clase base, entonces también es virtual en clase derivada, incluso si se omite la palabra clave virtual.

Sin embargo, para fines de documentación, en mi opinión, es bueno repetirlo de todos modos.

0

Cuando una clase hereda una función virtual, cualquier declaración nueva y anuladora de esa función se hará automáticamente virtual, incluso si la palabra clave virtual no se utiliza.

2

La función sigue siendo virtual (suponiendo que tiene la misma firma o una firma covariante). Usar virtual cuando la anulación es redundante.

+3

Puede ser redundante para el compilador pero es una buena documentación para cualquier ser humano que use la clase. –

+0

@LokiAstari: correcto. – PlasmaHH

5

No puede hacer que una función no sea virtual, por lo que se mantendrá virtual y una llamada a la función es en general también virtual. Por supuesto, hay situaciones en las que el compilador podrá optimizar esto y hacer una llamada directa, pero aparentemente no en su escenario.

1

Métodos virtuales creados para afectar en la clase derivada (Cuando marca un método como virtual. Utilizará vtable en las clases derivadas). Y los métodos anulados serán virtuales.

Cuestiones relacionadas