vtordisp
Specifické pro C++
Řídí přidání skrytého členu vtordisp pro přesunutí vytvoření nebo zničení.
#pragma vtordisp([push,] n)
#pragma vtordisp(pop)
#pragma vtordisp()
#pragma vtordisp([push,] {on | off})
Parametry
push
Uloží aktuální nastavení vtordisp do vnitřního zásobníku kompilátoru a nastaví nové nastavení vtordisp do parametru n. Není-li parametr n zadán, aktuální nastavení vtordisp není změněno.pop
Odstraní záznam z vrcholu vnitřního zásobníku kompilátoru a obnoví nastavení vtordisp na odstraněnou hodnotu.n
Určuje novou hodnotu nastavení vtordisp.Možnými hodnotami jsou 0, 1 a 2, které odpovídají možnostem kompilátoru /vd0, /vd1 a /vd2.Další informace naleznete v tématu /vd (Zakázat posunutí konstrukcí).on
Odpovídá #pragma vtordisp(1).off
Odpovídá #pragma vtordisp(0).
Poznámky
Direktivu pragma vtordisp lze použít pouze v kódu, který používá virtuální základy.Přepisuje-li odvozená třída virtuální funkci, kterou třída dědí z virtuální základní třídy, a pokud konstruktor nebo destruktor odvozené základní třídy tuto funkci volá pomocí ukazatele na virtuální základní třídu, kompilátor může do tříd s virtuálními základy zavést dodatečná skrytá pole vtordisp.
Direktiva pragma vtordisp ovlivňuje rozložení tříd uvedených za ní.Pro kompletní moduly určují možnosti /vd0, /vd1 a /vd2 stejné chování.Zadáním hodnoty 0 nebo off jsou skryté členy vtordisp potlačeny.Členy vtordisp vypněte pouze v případě, že neexistuje situace, kdy by konstruktory a destruktory třídy volaly virtuální funkce objektu, na který ukazuje ukazatel this.
Zadáním výchozí hodnoty 1 nebo on je povoleno použití skrytých členů vtordisp tam, kde jsou zapotřebí.
Zadáním hodnoty 2 povolí skryté členy vtordisp pro všechny virtuální základy s virtuálními funkcemi. Direktiva vtordisp(2) může být nezbytná pro zajištění správné činnosti přetypování dynamic_cast u částečně vytvořených objektů.Další informace naleznete v tématu Upozornění kompilátoru (úroveň 1) C4436.
Direktiva #pragma vtordisp() bez argumentů obnoví nastavení vtordisp na počáteční nastavení.
#pragma vtordisp(push, 2)
class GetReal : virtual public VBase { ... };
#pragma vtordisp(pop)
Specifické pro END C++