Udostępnij za pośrednictwem


vtordisp

Określonego język C++

Kontroluje dodanie ukrytego członka przemieszczenia konstruktora/destruktora vtordisp.

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

Parametry

  • push
    Umieszcza bieżące ustawienie vtordisp na wewnętrznym stosie kompilatora i ustawia nowe ustawienie vtordisp na n. Jeśli nie określono n, bieżące ustawienie vtordisp nie zostanie zmienione.

  • pop
    Usuwa górny rekord z wewnętrznego stosu kompilatora i przywraca ustawienie vtordisp na usuniętą wartość.

  • n
    Określa nową wartość dla ustawienia vtordisp.Możliwe wartości to 0, 1 lub 2, odpowiadające opcjom kompilatora /vd0, /vd1 i /vd2.Aby uzyskać więcej informacji, zobacz /vd (Wyłącz przemieszczanie konstrukcji).

  • on
    Równoważne do #pragma vtordisp(1).

  • off
    Równoważne do #pragma vtordisp(0).

Uwagi

Pragma vtordisp ma zastosowanie tylko do kodu, który korzysta z baz wirtualnych.Jeśli w klasie pochodnej przeciążono funkcję wirtualną, która jest dziedziczona z wirtualnej klasy podstawowej, oraz jeśli konstruktor lub destruktor klasy pochodnej wywołuje tą funkcję za pomocą wskaźnika do wirtualnej klasy podstawowej, kompilator może wprowadzić dodatkowe ukryte pola vtordisp do klas z bazami wirtualnymi.

Pragma vtordisp wpływa na układ klas, które po niej występują.Opcje /vd0, /vd1 i /vd2 określają takie samo zachowanie dla kompletnych modułów.Określenie 0 lub off powoduje pominięcie ukrytych członków vtordisp.Wyłącz vtordisp tylko jeśli nie istnieje żadna możliwość, aby konstruktory i destruktory klasy wywoływały funkcje wirtualne obiektu wskazywanego przez wskaźnik this.

Określenie 1 lub on, domyślnie, włącza ukrytych członków vtordisp, gdzie jest to niezbędne.

Określenie 2 włącza ukrytych członków vtordisp dla wszystkich baz wirtualnych z funkcjami wirtualnymi. vtordisp(2) może być niezbędne do zapewnienia prawidłowej wydajności dynamic_cast dla częściowo utworzonego obiektu.Aby uzyskać więcej informacji, zobacz Ostrzeżenie kompilatora (poziom 1) C4436.

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

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

KONIEC określonego języka C++

Zobacz też

Informacje

Dyrektywy pragma i słowo kluczowe __Pragma