vtordisp
pragma
Řídí přidání skrytého vtordisp
členu posunutí konstrukce/zničení. Je vtordisp
pragma 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
, 1
nebo 2
, odpovídající /vd0
možnosti , /vd1
a /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í vtordisp
pragma 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 vtordisp
pragma na rozložení tříd, které ji následují. Možnosti /vd0
, /vd1
a /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)