Share via


Palabras clave de herencia

Específicos de Microsoft

class [__single_inheritance] class-name;
class [__multiple_inheritance] class-name;
class [__virtual_inheritance] class-name;

donde:

  • nombre de clase
    El nombre de la clase que se declara.

C++ permite declarar un puntero a un miembro de clase antes de la definición de clase.Por ejemplo:

class S;
int S::*p;

En el código anterior, p se declara como puntero a miembro entero de s para la clase.Sin embargo, class S todavía no se ha definido en este código; se ha declarado únicamente.Cuando el compilador encuentra un puntero, debe crear una representación generalizada de puntero.El tamaño de representación depende del modelo de herencia especificado.Hay cuatro maneras de especificar un modelo de herencia al compilador:

  • En el IDE en representación de puntero a miembro

  • En la línea de comandos mediante el modificador /vmg

  • Con la directiva de pointers_to_members

  • Mediante las palabras clave __single_inheritance, __multiple_inheritance, y __virtual_inheritancede herencia.Esta técnica controla el modelo de herencia en función de la por-clase.

    [!NOTA]

    Si declara siempre un puntero a un miembro de una clase después de definir la clase, no necesita utilizar cualquiera de estas opciones.

Declarar un puntero a un miembro de una clase antes de la definición de clase afecta al tamaño y la velocidad del archivo ejecutable resultante.Cuanto más compleja herencia utilizada por una clase, mayor será el número de bytes necesarios para representar un puntero a un miembro de la clase y el mayor es el código necesario para interpretar el puntero.La herencia única es mínima compleja, y la herencia virtual es más compleja.

Si el ejemplo anterior se cambia:

class __single_inheritance S;
int S::*p;

independientemente de las opciones de la línea de comandos o pragma, los punteros a miembros de class S utilizarán la representación más pequeña posible.

[!NOTA]

La misma declaración adelantada de una representación de puntero a miembro de la clase deben aparecer en cada unidad de traducción que declare punteros a miembros de esa clase, y la declaración debe aparecer antes de que los punteros a miembros se declaran.

Específico de Microsoft de FINAL

Vea también

Referencia

Palabras clave de C++