/vd (Deshabilitar desplazamientos de constructores)
Actualización: noviembre 2007
/vd admite el comportamiento incorrecto de una versión anterior de Visual C++ y ya no se necesita.
/vdn
Argumentos
0
Suprime el miembro de desplazamiento de constructor/destructor de vtordisp. Elija esta opción solamente si tiene la certeza de que todos los constructores y destructores de clases llaman a las funciones virtuales de manera virtual.1
Habilita la creación de los miembros de desplazamiento de constructor/destructor de vtordisp ocultos. Éste es el valor predeterminado.2
Le permite utilizar dynamic_cast Operator en un objeto en construcción. Por ejemplo, un dynamic_cast de una clase base virtual a una clase derivada./vd2 agrega un campo vtordisp cuando hay una base virtual con funciones virtuales. /vd1 debería ser suficiente. El caso más común en que /vd2 es necesario es cuando la única función virtual en la base virtual es un destructor.
Comentarios
Estas opciones sólo se aplican al código de C++ que usa bases virtuales.
Visual C++ implementa la compatibilidad con el desplazamiento de construcción de C++ en aquellas situaciones donde se utiliza herencia virtual. Los desplazamientos de construcción resuelven el problema creado cuando desde un constructor se llama a una función virtual, declarada en una base virtual y reemplazada en una clase derivada, durante la construcción de otra clase derivada.
El problema es que la función virtual puede recibir un puntero this incorrecto como consecuencia de discrepancias entre los desplazamientos a las bases virtuales de una clase y los desplazamientos a sus clases derivadas. La solución proporciona un solo ajuste de desplazamiento de construcción, denominado campo vtordisp, para cada base virtual de una clase.
De forma predeterminada, los campos vtordisp se introducen siempre que el código define constructores y destructores definidos por el usuario y también reemplaza a funciones virtuales de bases virtuales.
Estas opciones afectan a archivos de código fuente completos. Utilice vtordisp para suprimir campos vtordisp y después volver a habilitarlos clase por clase.
Para establecer esta opción del compilador en el entorno de desarrollo de Visual Studio
Abra el cuadro de diálogo Páginas de propiedades del proyecto. Para obtener información detallada, vea Cómo: Abrir páginas de propiedades del proyecto.
Haga clic en la carpeta C/C++.
Haga clic en la página de propiedades Línea de comandos.
Escriba la opción del compilador en el cuadro Opciones adicionales.
Para establecer esta opción del compilador mediante programación
- Vea AdditionalOptions.