/vd (Désactiver les déplacements de construction)
/vdn
Arguments
0
Supprime le membre de déplacement de constructeur/destructeur vtordisp.Choisissez cette option uniquement si vous êtes certain que tous les constructeurs et destructeurs de classe appellent virtuellement les fonctions virtuelles.1
Active la création de membres de déplacement de constructeur/destructeur vtordisp masqués.Il s'agit de l'option par défaut.2
Permet d'utiliser l'opérateur de dynamic_cast sur un objet en cours de construction.Par exemple, un dynamic_cast provenant d'une classe de base virtuelle vers une classe dérivée./vd2 ajoute un champ vtordisp lorsque vous utilisez une base virtuelle avec des fonctions virtuelles.L'option /vd1 devrait être suffisante.Le cas le plus fréquent d'utilisation de /vd2, c'est lorsque la seule fonction virtuelle contenue dans 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 du déplacement de construction C++ quand l'héritage virtuel est utilisé.Les déplacements de construction résolvent le problème qui survient quand 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 pendant la construction d'une autre classe dérivée.
Le problème est que la fonction virtuelle peut recevoir un pointeur this incorrect à cause de différences existant entre les déplacements vers les bases virtuelles d'une classe et les déplacements vers les 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 destructeurs définis par l'utilisateur et qu'il substitue également les fonctions virtuelles des bases virtuelles.
Ces options affectent l'ensemble des fichiers source.Utilisez vtordisp de façon à supprimer,puis à réactiver les champs vtordisp classe par classe.
Pour définir cette option du compilateur dans l'environnement de développement Visual Studio
Ouvrez la boîte de dialogue Pages de propriété du projet.Pour plus d'informations, consultez Comment : ouvrir les pages de propriétés d'un projet.
Cliquez sur le dossier C/C++.
Cliquez sur la page de propriétés Ligne de commande.
Spécifiez l'option du compilateur dans la zone Options supplémentaires.
Pour définir cette option du compilateur par programmation
- Consultez AdditionalOptions.