Share via


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

Mise à jour : novembre 2007

L'option /vd permettait de remédier à un comportement incorrect dans une version antérieure de Visual C++ ; elle n'est plus nécessaire.

/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'dynamic_cast Operator 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 disposez d'une base virtuelle avec des fonctions virtuelles. /vd1 devrait suffire. 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

  1. 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.

  2. Cliquez sur le dossier C/C++.

  3. Cliquez sur la page de propriétés Ligne de commande.

  4. Spécifiez l'option du compilateur dans la zone Options supplémentaires.

Pour définir cette option du compilateur par programme

Voir aussi

Référence

Options du compilateur

Définition des options du compilateur