Freigeben über


vtordisp pragma

Steuert das Hinzufügen des ausgeblendeten vtordisp Bau-/Zerstörungsverschiebungselements. Dies vtordisppragma 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, 1oder 2, die den /vd0Compileroptionen /vd1/vd2 entsprechen. Weitere Informationen finden Sie unter /vd (Deaktivieren von Bauverschiebungen).

on
Entspricht #pragma vtordisp(1).

off
Entspricht #pragma vtordisp(0).

Hinweise

Dies vtordisppragma 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 vtordisppragma wirkt sich auf das Layout von Klassen aus, die darauf folgen. Die /vd0Optionen 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 onfestlegen, 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)

Siehe auch

PragmaDirektiven und Schlüsselwörter __pragma _Pragma