Partager via


/vd (Désactiver les déplacements de construction)

Syntaxe

/vdn

Arguments

0
Supprime le constructeur/destructeur vtordisp membre de déplacement. Choisissez cette option uniquement si vous êtes certain que tous les constructeurs de classe et les destructeurs appellent virtuellement des fonctions virtuelles.

1
Permet de créer des membres de déplacement de constructeur/destructeur vtordisp masqués. Ce choix est la valeur par défaut.

2
Vous permet d’utiliser dynamic_cast Opérateur sur un objet en cours de construction. Par exemple, un dynamic_cast d’une classe de base virtuelle à une classe dérivée.

/vd2 ajoute un champ vtordisp lorsque vous disposez d’une base virtuelle avec des fonctions virtuelles. /vd1 doit être suffisant. Le cas le plus courant où /vd2 est nécessaire est quand la seule fonction virtuelle de votre base virtuelle est un destructeur.

Notes

Ces options s’appliquent uniquement au code C++ qui utilise des bases virtuelles.

Visual C++ implémente la prise en charge des déplacements de construction C++ dans les situations où l’héritage virtuel est utilisé. Les déplacements de construction résolvent le problème créé lorsqu’une fonction virtuelle, déclarée dans une base virtuelle et substituée dans une classe dérivée, est appelée à partir d’un constructeur lors de la construction d’une autre classe dérivée.

Le problème est que la fonction virtuelle peut être passée à un pointeur incorrect this en raison d’écarts entre les déplacements vers les bases virtuelles d’une classe et les déplacements vers ses classes dérivées. La solution fournit un ajustement de déplacement de construction unique, appelé champ vtordisp, pour chaque base virtuelle d’une classe.

Par défaut, les champs vtordisp sont introduits chaque fois que le code définit des constructeurs et des destructeurs définis par l’utilisateur et remplace également les fonctions virtuelles des bases virtuelles.

Ces options affectent l’ensemble des fichiers sources. Utilisez vtordisp pour supprimer, puis réactiver les champs vtordisp sur une base de classe par classe.

Pour définir cette option du compilateur dans l'environnement de développement Visual Studio

  1. Ouvrez la boîte de dialogue Pages de propriété du projet. Pour plus d’informations, consultez Définir le compilateur C++ et les propriétés de build dans Visual Studio.

  2. Sélectionnez la page de propriétés Propriétés de configuration>C/C++>Ligne de commande.

  3. Entrez l’option du compilateur dans la zone Options supplémentaires.

Pour définir cette option du compilateur par programmation

Voir aussi

Options du compilateur MSVC
Syntaxe de la ligne de commande du compilateur MSVC