Sdílet prostřednictvím


vtordisp pragma

Řídí přidání skrytého vtordisp členu posunutí konstrukce/zničení. Je vtordisppragma specifický pro jazyk C++.

Syntaxe

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

Parametry

push
Nasdílí aktuální vtordisp nastavení do interního zásobníku kompilátoru a nastaví nové vtordisp nastavení na n. Pokud není zadán n, aktuální vtordisp nastavení se nezmění.

pop
Odebere horní záznam z interního zásobníku kompilátoru a obnoví vtordisp nastavení na odebranou hodnotu.

n
Určuje novou hodnotu pro vtordisp nastavení. Možné hodnoty jsou 0, 1nebo 2, odpovídající /vd0možnosti , /vd1a /vd2 kompilátoru. Další informace naleznete v tématu /vd (Zakázání posunutí konstrukce).

on
Ekvivalent k #pragma vtordisp(1).

off
Ekvivalent k #pragma vtordisp(0).

Poznámky

Platí vtordisppragma pouze pro kód, který používá virtuální báze. Pokud odvozená třída přepíše virtuální funkci, kterou dědí z virtuální základní třídy, a pokud konstruktor nebo destruktor odvozené třídy volá tuto funkci pomocí ukazatele na virtuální základní třídu, kompilátor může do tříd s virtuálními základy zavést další skrytá vtordisp pole.

Vliv vtordisppragma na rozložení tříd, které ji následují. Možnosti /vd0, /vd1a /vd2 kompilátoru určují stejné chování pro úplné moduly. 0 Určení nebo off potlačení skrytých vtordisp členů Vypněte vtordisp pouze v případě, že neexistuje možnost, že konstruktory a destruktory třídy volají virtuální funkce na objektu, na který this odkazuje ukazatel.

1 Určení nebo on, výchozí, povolí skryté vtordisp členy tam, kde jsou nezbytné.

Určení 2 umožňuje skrytým vtordisp členům pro všechny virtuální báze s virtuálními funkcemi. #pragma vtordisp(2) může být nezbytné k zajištění správného výkonu dynamic_cast částečně vytvořeného objektu. Další informace naleznete v tématu Upozornění kompilátoru (úroveň 1) C4436.

#pragma vtordisp(), bez argumentů obnoví vtordisp nastavení na počáteční nastavení.

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

Viz také

Direktivy Pragma a __pragma _Pragma klíčová slova