Share via


vtordisp pragma

Contrôle l’ajout du membre de déplacement de construction/destruction masqué vtordisp . Spécifique vtordisppragma à C++.

Syntaxe

#pragma vtordisp( [ push, ] n)
#pragma vtordisp(pop)
#pragma vtordisp()
#pragma vtordisp( [ push, ] { on | off } )

Paramètres

push
Envoie (push) le paramètre actuel vtordisp sur la pile du compilateur interne et définit le nouveau vtordisp paramètre sur n. Si n’est pas spécifié, le paramètre actuel vtordisp n’est pas modifié.

pop
Supprime l’enregistrement supérieur de la pile du compilateur interne et restaure le vtordisp paramètre sur la valeur supprimée.

n
Spécifie la nouvelle valeur du vtordisp paramètre. Les valeurs possibles sont 0, 1ou 2, correspondant aux /vd0options , /vd1et /vd2 compilateur. Pour plus d’informations, consultez /vd (Désactiver les déplacements de construction).

on
Équivaut à #pragma vtordisp(1).

off
Équivaut à #pragma vtordisp(0).

Notes

Il vtordisppragma s’applique uniquement au code qui utilise des bases virtuelles. Si une classe dérivée remplace une fonction virtuelle qu’elle hérite d’une classe de base virtuelle, et si un constructeur ou un destructeur pour les appels de classe dérivées qui appellent cette fonction à l’aide d’un pointeur vers la classe de base virtuelle, le compilateur peut introduire des champs masqués vtordisp supplémentaires dans des classes avec des bases virtuelles.

La vtordisppragma disposition des classes qui le suivent affecte. Les /vd0options , /vd1et /vd2 du compilateur spécifient le même comportement pour les modules complets. 0 Spécification ou off suppression des membres masquésvtordisp. Désactivez vtordisp uniquement s’il n’existe aucune possibilité que les constructeurs et les destructeurs de la classe appellent des fonctions virtuelles sur l’objet pointé par le this pointeur.

La spécification 1 ou on, par défaut, active les membres masqués vtordisp là où ils sont nécessaires.

La spécification 2 active les membres masqués vtordisp pour toutes les bases virtuelles avec des fonctions virtuelles. #pragma vtordisp(2) peut être nécessaire pour garantir des performances dynamic_cast correctes sur un objet partiellement construit. Pour plus d’informations, consultez Avertissement du compilateur (niveau 1) C4436.

#pragma vtordisp(), sans arguments, restaure le vtordisp paramètre dans son paramètre initial.

#pragma vtordisp(push, 2)
class GetReal : virtual public VBase { ... };
#pragma vtordisp(pop)

Voir aussi

Directives pragma et les __pragma_Pragma mot clé