Palabras clave de herencia
Este artículo se tradujo de forma manual. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

Palabras clave de herencia

 

Específicos de Microsoft


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

donde:

class-name

Nombre de la clase que se está declarando.

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 un puntero a miembro entero de clase S.Sin embargo, class S aún no se ha definido en este código; solo se ha declarado.Cuando el compilador encuentra un puntero así, debe crear una representación generalizada del puntero.El tamaño de la representación depende del modelo de herencia especificado.Hay cuatro maneras de especificar un modelo de herencia al compilador:

  • En el IDE bajo Representación de puntero a miembro

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

  • Con la directiva pragma pointers_to_members

  • Mediante las palabras clave de herencia __single_inheritance, __multiple_inheritance y __virtual_inheritance.Esta técnica controla el modelo de herencia clase por clase.

    System_CAPS_noteNota

    Si siempre se declara un puntero a un miembro de una clase después de definir la clase, no se necesita usar ninguna 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 es la herencia usada por una clase, mayor será el número de bytes necesarios para representar un puntero a un miembro de la clase y cuando mayor es el código necesario para interpretar el puntero.La herencia única es la menos compleja y la herencia virtual la más compleja.

Si se cambia el ejemplo anterior a:

class __single_inheritance S;
int S::*p;

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

System_CAPS_noteNota

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

FIN de Específicos de Microsoft

Mostrar:
© 2016 Microsoft