/vd (Konstruktionsverschiebungen deaktivieren)

Syntax

/vdn

Argumente

0
Unterdrückt den vtordisp-Konstruktor/destruktor-Verdrängungsmemm. Wählen Sie diese Option nur aus, wenn Sie sicher sind, dass alle Klassenkonstruktoren und Destruktoren virtuelle Funktionen virtuell aufrufen.

1
Ermöglicht die Erstellung ausgeblendeter vtordisp-Konstruktor-/Destruktor-Verdrängungsmber. Diese Option ist die Standardeinstellung.

2
Ermöglicht die Verwendung dynamic_cast Operator für ein zu erstellende Objekt. Beispiel: eine dynamic_cast von einer virtuellen Basisklasse zu einer abgeleiteten Klasse.

/vd2 fügt ein vtordisp-Feld hinzu, wenn Sie über eine virtuelle Basis mit virtuellen Funktionen verfügen. /vd1 sollte ausreichen. Der häufigste Fall, in dem /vd2 erforderlich ist, ist, wenn die einzige virtuelle Funktion in Ihrer virtuellen Basis ein Destruktor ist.

Hinweise

Diese Optionen gelten nur für C++-Code, der virtuelle Basen verwendet.

Visual C++ implementiert die C++-Bauvertreibungsunterstützung in Situationen, in denen virtuelle Vererbung verwendet wird. Bauverschiebungen lösen das Problem, das beim Erstellen einer virtuellen Funktion, die in einer virtuellen Basis deklariert und in einer abgeleiteten Klasse überschrieben wird, von einem Konstruktor während der Konstruktion einer weiteren abgeleiteten Klasse aufgerufen wird.

Das Problem besteht darin, dass die virtuelle Funktion aufgrund von Diskrepanzen zwischen den Verschiebungen zu den virtuellen Basen einer Klasse und den Verschiebungen an die abgeleiteten Klassen einen falschen this Zeiger übergeben werden kann. Die Lösung bietet für jede virtuelle Basis einer Klasse eine einzelne Verdrängungsanpassung, die als Vtordisp-Feld bezeichnet wird.

Standardmäßig werden Vtordisp-Felder eingeführt, wenn der Code benutzerdefinierte Konstruktoren und Destruktoren definiert und auch virtuelle Funktionen virtueller Basen überschreibt.

Diese Optionen wirken sich auf gesamte Quelldateien aus. Verwenden Sie vtordisp, um Vtordisp-Felder auf Klassenbasis zu unterdrücken und dann erneut zu aktivieren.

So legen Sie diese Compileroption in der Visual Studio-Entwicklungsumgebung fest

  1. Öffnen Sie das Dialogfeld Eigenschaftenseiten des Projekts. Weitere Informationen erhalten Sie unter Set C++ compiler and build properties in Visual Studio (Festlegen der Compiler- und Buildeigenschaften (C++) in Visual Studio).

  2. Klicken Sie auf der Eigenschaftenseite auf Konfigurationseigenschaften>C/C++>Befehlszeile.

  3. Geben Sie die Compileroption im Feld "Zusätzliche Optionen " ein.

So legen Sie diese Compileroption programmgesteuert fest

Siehe auch

MSVC-Compileroptionen
Syntax für die MSVC-Compilerbefehlszeile