vtordisp
pragma
Steuert das Hinzufügen des ausgeblendeten vtordisp
Bau-/Zerstörungsverschiebungselements. Dies vtordisp
pragma ist C++-spezifisch.
Syntax
#pragma vtordisp(
[push,
] n)
#pragma vtordisp(pop)
#pragma vtordisp()
#pragma vtordisp(
[push,
] {on
|off
})
Parameter
push
Verschiebt die aktuelle vtordisp
Einstellung auf den internen Compilerstapel und legt die neue vtordisp
Einstellung auf n fest. Wenn n nicht angegeben ist, ist die aktuelle vtordisp
Einstellung unverändert.
pop
Entfernt den obersten Datensatz aus dem internen Compilerstapel und stellt die vtordisp
Einstellung auf den entfernten Wert wieder her.
n
Gibt den neuen Wert für die vtordisp
Einstellung an. Mögliche Werte sind 0
, 1
oder 2
, die den /vd0
Compileroptionen /vd1
/vd2
entsprechen. Weitere Informationen finden Sie unter /vd
(Deaktivieren von Bauverschiebungen).
on
Entspricht #pragma vtordisp(1)
.
off
Entspricht #pragma vtordisp(0)
.
Hinweise
Dies vtordisp
pragma gilt nur für Code, der virtuelle Basen verwendet. Wenn eine abgeleitete Klasse eine virtuelle Funktion außer Kraft setzt, die sie von einer virtuellen Basisklasse erbt, und wenn ein Konstruktor oder Destruktor für die abgeleitete Klasse diese Funktion mithilfe eines Zeigers auf die virtuelle Basisklasse aufruft, kann der Compiler zusätzliche ausgeblendete vtordisp
Felder in Klassen mit virtuellen Basen einführen.
Dies vtordisp
pragma wirkt sich auf das Layout von Klassen aus, die darauf folgen. Die /vd0
Optionen und /vd1
/vd2
Compileroptionen geben das gleiche Verhalten für vollständige Module an. Angeben 0
oder off
Unterdrücken der ausgeblendeten vtordisp
Elemente. vtordisp
Deaktivieren Sie nur, wenn es keine Möglichkeit gibt, dass die Konstruktoren und Destruktoren der Klasse virtuelle Funktionen für das Objekt aufrufen, auf das der this
Zeiger verweist.
Wenn Sie die Standardeinstellung angeben 1
oder on
festlegen, werden die ausgeblendeten vtordisp
Elemente aktiviert, in denen sie erforderlich sind.
Durch Angeben 2
werden die ausgeblendeten vtordisp
Member für alle virtuellen Basen mit virtuellen Funktionen aktiviert. #pragma vtordisp(2)
kann erforderlich sein, um die korrekte Leistung eines dynamic_cast
teilweise konstruierten Objekts sicherzustellen. Weitere Informationen finden Sie unter Compilerwarnung (Ebene 1) C4436.
#pragma vtordisp()
, ohne Argumente, stellt die Einstellung in der vtordisp
ursprünglichen Einstellung wieder her.
#pragma vtordisp(push, 2)
class GetReal : virtual public VBase { ... };
#pragma vtordisp(pop)