Partager via


Mots clés d'héritage

Spécifique à Microsoft

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

où :

  • nom de classe
    Le nom de la classe est déclarée.

C++ vous permet de déclarer un pointeur vers un membre de classe avant la définition de la classe.Par exemple :

class S;
int S::*p;

Dans le code ci-dessus, p est déclaré pour être un pointeur vers membre entier de la classe S.Toutefois, class S n'a pas encore été défini dans ce code ; il a uniquement été déclaré.Lorsque le compilateur rencontre un tel pointeur, elle doit faire une représentation généralisée du pointeur.La taille de la représentation dépend du modèle d'héritage spécifié.Il existe quatre façons de spécifier un modèle d'héritage au compilateur :

  • Dans l'IDE sous représentation de pointeur vers membre

  • Dans la ligne de commande à l'aide de le commutateur de /vmg

  • À l'aide de le pragma de pointers_to_members

  • À l'aide de les mots clés d'héritage __single_inheritance, __multiple_inheritance, et __virtual_inheritance.Cette technique contrôle le modèle d'héritage sur une base de par-classe.

    [!REMARQUE]

    Si vous déclarez toujours un pointeur vers un membre d'une classe après avoir défini la classe, vous n'avez pas besoin d'utiliser l'un de ces options.

Déclarer un pointeur vers un membre d'une classe avant la définition de classe affecte la taille et la vitesse du fichier exécutable résultante.Plus l'héritage utilisé par une classe est complexe, plus le nombre d'octets requis pour représenter un pointeur vers un membre de la classe est supérieur et plus code requis pour interpréter le pointeur est important.L'héritage unique est moins complexe, et l'héritage virtuel est plus complexe.

si l'exemple ci-dessus est modifié :

class __single_inheritance S;
int S::*p;

quelles que soient les options de ligne de commande ou les pragmas, les pointeurs vers des membres d' class S utilisent la plus petite possible performances.

[!REMARQUE]

La même déclaration anticipée de performance d'un pointeur vers membre de classe doit se produire dans chaque unité de traduction qui déclare des pointeurs vers des membres de cette classe, et la déclaration doit se produire avant que les pointeurs vers des membres être déclarées.

détail de FIN Microsoft

Voir aussi

Référence

Mots clés C++