Compartir a través de


/vd (Deshabilitar desplazamientos de constructores)

Sintaxis

/vdn

Argumentos

0
Suprime el miembro de desplazamiento del constructor o destructor de vtordisp. Elija esta opción sólo si está seguro de que todos los constructores y destructores de clase llaman a funciones virtuales.

1
Habilita la creación de los miembros ocultos de desplazamiento del constructor o destructor de vtordisp. Esta opción es la predeterminada.

2
Perrmite usar el Operador dynamic_cast en un objeto que se está construyendo. Por ejemplo, una dynamic_cast desde una clase base virtual a una clase derivada.

/vd2 agrega un campo de vtordisp cuando tiene una base virtual con funciones virtuales. /vd1 debería ser suficiente. El caso más común en el que es necesario /vd2 es cuando la única función virtual de la base virtual es un destructor.

Comentarios

Estas opciones solo se aplican al código de C++ que usa las bases virtuales.

Visual C++ implementa la compatibilidad con el desplazamiento de la construcción de C++ en las situaciones en las que se usa la herencia virtual. Los desplazamientos de construcción resuelven el problema creado cuando una función virtual, declarada en una base virtual e invalidada en una clase derivada, se llama desde un constructor durante la construcción de otra clase derivada.

El problema es que a la función virtual se le puede pasar un puntero incorrecto this como resultado de las discrepancias entre los desplazamientos a las bases virtuales de una clase y los desplazamientos a sus clases derivadas. La solución proporciona un único ajuste de desplazamiento de construcción, llamado campo vtordisp, para cada base virtual de una clase.

De manera predeterminada, los campos vtordisp se introducen siempre que el código establece constructores y destructores definidos por el usuario y también invalida funciones virtuales de las bases virtuales.

Estas opciones afectan a los archivos de código fuente completos. Use vtordisp para suprimir y después volver a habilitar los campos de vtordisp en cada clase.

Para establecer esta opción del compilador en el entorno de desarrollo de Visual Studio

  1. Abra el cuadro de diálogo Páginas de propiedades del proyecto. Para más información, vea Establecimiento del compilador de C++ y de propiedades de compilación en Visual Studio.

  2. Seleccione la página de propiedades Propiedades de configuración>C/C++>Línea de comandos.

  3. Escriba la opción del compilador en el cuadro Opciones adicionales.

Para establecer esta opción del compilador mediante programación

Consulte también

Opciones del compilador de MSVC
Sintaxis de la línea de comandos del compilador MSVC