vtordisp
pragma
Contrôle l’ajout du membre de déplacement de construction/destruction masqué vtordisp
. Spécifique vtordisp
pragma à 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
, 1
ou 2
, correspondant aux /vd0
options , /vd1
et /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 vtordisp
pragma 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 vtordisp
pragma disposition des classes qui le suivent affecte. Les /vd0
options , /vd1
et /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)