Delen via


vtordisp pragma

Bepaalt de toevoeging van het verborgen vtordisp lid van bouw-/vernietigingsverplaatsing. De vtordisppragma is C++-specifiek.

Syntaxis

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

Parameters

push
Pusht de huidige vtordisp-instelling op de interne compilerstack en stelt de nieuwe vtordisp-instelling in op n. Als n niet is opgegeven, is de huidige vtordisp instelling ongewijzigd.

pop
Hiermee verwijdert u de bovenste record uit de interne compilerstack en herstelt u de vtordisp-instelling op de verwijderde waarde.

n
Hiermee geeft u de nieuwe waarde voor de vtordisp instelling. Mogelijke waarden zijn 0, 1of 2, die overeenkomen met de /vd0, /vd1en /vd2 compileropties. Zie /vd (Bouwverplaatsingen uitschakelen)voor meer informatie.

on
Gelijk aan #pragma vtordisp(1).

off
Gelijk aan #pragma vtordisp(0).

Opmerkingen

De vtordisppragma is alleen van toepassing op code die gebruikmaakt van virtuele bases. Als een afgeleide klasse een virtuele functie overschrijft die deze overschrijft van een virtuele basisklasse en als een constructor of destructor voor de afgeleide klasse die functie aanroept met behulp van een aanwijzer naar de virtuele basisklasse, kan de compiler extra verborgen vtordisp velden in klassen met virtuele bases introduceren.

De vtordisppragma is van invloed op de indeling van klassen die hierop volgen. De opties /vd0, /vd1en /vd2 compileren geven hetzelfde gedrag op voor volledige modules. Als u 0 of off opgeeft, worden de verborgen vtordisp leden onderdrukt. Schakel vtordisp alleen uit als er geen mogelijkheid is dat de constructors en destructors van de klasse virtuele functies aanroepen op het object waarnaar wordt verwezen door de this aanwijzer.

Als u 1 of onopgeeft, schakelt u de verborgen vtordisp leden in waar ze nodig zijn.

Als u 2 opgeeft, worden de verborgen vtordisp leden ingeschakeld voor alle virtuele bases met virtuele functies. #pragma vtordisp(2) kan nodig zijn om de juiste prestaties van dynamic_cast op een gedeeltelijk geconstrueerd object te garanderen. Zie Compilerwaarschuwing (niveau 1) C4436voor meer informatie.

#pragma vtordisp(), zonder argumenten, herstelt u de vtordisp instelling naar de oorspronkelijke instelling.

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

Zie ook

Pragma-instructies en de __pragma en _Pragma trefwoorden