2009-05-08 10 views
7

¿Qué significa cuando "virtual" está en "clase Foo: barra virtual pública" en lugar de "virtual void frob()"?¿Qué significa cuando "virtual" está en "clase Foo: barra virtual pública" en lugar de "virtual void frob()"?

Para un método dado, hay 8 casos derivados de la presencia o ausencia de virtual en las siguientes tres ubicaciones.

  1. Funciones de una superclase.
  2. La cadena de herencia para esta clase.
  3. Esta clase funciona.

Creo que entiendo cómo los números 1 y 3 interactúan, pero el número 2 parece redundante. ¿Lo es? ¿Qué no estoy entendiendo?

Respuesta

11

Eso es virtual inheritance, lo haces cuando sabes que estarás haciendo herencia múltiple. Esa página entra en forma más detallada.

Cuestiones relacionadas