Freigeben über


vtordisp

C++ spezifisch

Steuert die Einführung des ausgeblendeten vtordisp Konstruktions-/Zerstörungs-Verschiebungsmembers.

#pragma vtordisp([push,] n)
#pragma vtordisp(pop)
#pragma vtordisp()
#pragma vtordisp([push,] {on | off})

Parameter

  • push
    Drückt die aktuelle Einstellung vtordisp im internen Compilerstapel und legt das neue vtordisp fest, die an n festgelegt wird.Wenn n nicht angegeben wird, wird die aktuelle vtordisp Einstellung nicht geändert.

  • pop
    Entfernt den obersten Datensatz im internen Compilerstapel und stellt das vtordisp zurück, das dem entfernten Wert festgelegt wird.

  • n
    Gibt den neuen Wert für die vtordisp Einstellung.Mögliche Werte sind 0, 1 oder 2, entsprechend /vd0, /vd1 und /vd2- Compileroptionen.Weitere Informationen finden Sie unter /vd (Konstruktionsverschiebungen deaktivieren).

  • on
    Entspricht #pragma vtordisp(1).

  • off
    Entspricht #pragma vtordisp(0).

Hinweise

Das vtordisp Pragma ist, gilt nur für Code die virtuellen Basen.Wenn eine abgeleitete Klasse eine virtuelle Funktion überschreibt, die sie einer virtuellen Basisklasse erbt, und wenn ein Konstruktor oder Destruktor für die Aufrufe der abgeleiteten Klasse, die arbeiten mithilfe eines Zeigers der virtuellen Basisklasse Bei, der Compiler möglicherweise zusätzliche vtordisp ausgeblendete Felder in Klassen mit virtuellen Basen.

Das vtordisp Pragma hat das Layout von Klassen, die ihm folgen./vd0, /vd1 und /vd2- Optionen geben das gleiche Verhalten für vollständige Module an.Das Angeben von 0 oder von off unterdrückt die ausgeblendeten vtordisp-Member.Erstellen Sie vtordisp nur ab, wenn es keine Möglichkeit gibt, dass der die Konstruktoren und Destruktoren die Klasse virtuelle Funktionen für das Objekt aufrufen, das von dem this Zeiger verweist.

1 oder on angibt, ermöglicht der Standard, die ausgeblendeten vtordisp-Member, in denen sie notwendig sind.

Das Angeben von 2 aktiviert die ausgeblendeten vtordisp-Member für alle virtuellen Basen mit virtuellen Funktionen.vtordisp(2) ist möglicherweise erforderlich, um die richtige Leistung von dynamic_cast auf einem teilweis-erstellten Objekt sicherzustellen.Weitere Informationen finden Sie unter Compilerwarnung (Stufe 1) C4436.

#pragma vtordisp(), ohne Argumente, stellt das vtordisp wieder her, das auf die ursprüngliche Einstellung festgelegt wird.

#pragma vtordisp(push, 2)
class GetReal : virtual public VBase { ... };
#pragma vtordisp(pop)

END C++ spezifisch

Siehe auch

Referenz

Pragma-Direktiven und das __Pragma-Schlüsselwort