vtordisp
pragma
Bepaalt de toevoeging van het verborgen vtordisp
lid van bouw-/vernietigingsverplaatsing. De vtordisp
pragma 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
, 1
of 2
, die overeenkomen met de /vd0
, /vd1
en /vd2
compileropties. Zie /vd
(Bouwverplaatsingen uitschakelen)voor meer informatie.
on
Gelijk aan #pragma vtordisp(1)
.
off
Gelijk aan #pragma vtordisp(0)
.
Opmerkingen
De vtordisp
pragma 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 vtordisp
pragma is van invloed op de indeling van klassen die hierop volgen. De opties /vd0
, /vd1
en /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 on
opgeeft, 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)