Udostępnij za pośrednictwem


vtordisp pragma

Steruje dodatkami ukrytej vtordisp konstrukcji/destrukcji składowej przemieszczania. Element vtordisppragma jest specyficzny dla języka C++.

Składnia

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

Parametry

push
Wypycha bieżące vtordisp ustawienie na wewnętrznym stosie kompilatora i ustawia nowe vtordisp ustawienie na n. Jeśli n nie zostanie określony, bieżące vtordisp ustawienie pozostanie niezmienione.

pop
Usuwa rekord z wewnętrznego stosu kompilatora i przywraca vtordisp ustawienie do usuniętej wartości.

n
Określa nową wartość ustawienia vtordisp . Możliwe wartości to 0, 1lub 2, odpowiadające opcjom kompilatora /vd0, /vd1i /vd2 . Aby uzyskać więcej informacji, zobacz /vd (Wyłączanie przemieszczeń budowlanych).

on
Odpowiednik elementu #pragma vtordisp(1).

off
Odpowiednik elementu #pragma vtordisp(0).

Uwagi

Element vtordisppragma ma zastosowanie tylko do kodu, który używa baz wirtualnych. Jeśli klasa pochodna zastępuje funkcję wirtualną, która dziedziczy z wirtualnej klasy bazowej, a konstruktor lub destruktor dla klasy pochodnej wywołuje tę funkcję przy użyciu wskaźnika do wirtualnej klasy bazowej, kompilator może wprowadzić dodatkowe ukryte vtordisp pola do klas z bazami wirtualnymi.

Element vtordisppragma ma wpływ na układ klas, które są zgodne z nim. Opcje kompilatora /vd0, /vd1i /vd2 określają to samo zachowanie dla kompletnych modułów. Określanie 0 lub off pomija ukryte vtordisp elementy członkowskie. Wyłącz tylko vtordisp wtedy, gdy nie ma możliwości, aby konstruktory i destruktory klasy wywoływać funkcje wirtualne w obiekcie wskazywane this przez wskaźnik.

Określenie 1 wartości domyślnej lub on, włącza ukryte vtordisp elementy członkowskie, gdy są one niezbędne.

Określanie 2 umożliwia ukrytych vtordisp elementów członkowskich dla wszystkich baz wirtualnych z funkcjami wirtualnymi. #pragma vtordisp(2) może być konieczne zapewnienie prawidłowej dynamic_cast wydajności obiektu częściowo skonstruowanego. Aby uzyskać więcej informacji, zobacz Ostrzeżenie kompilatora (poziom 1) C4436.

#pragma vtordisp(), bez argumentów, przywraca vtordisp ustawienie do jego początkowego ustawienia.

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

Zobacz też

Pragmadyrektywy i __pragma słowa kluczowe i _Pragma