vtordisp
pragma
Controlla l'aggiunta del membro di spostamento di costruzione/distruzione nascosto vtordisp
. è vtordisp
pragma specifico di C++.
Sintassi
#pragma vtordisp(
[push,
] n)
#pragma vtordisp(pop)
#pragma vtordisp()
#pragma vtordisp(
[push,
] {on
|off
})
Parametri
push
Esegue il push dell'impostazione corrente vtordisp
nello stack del compilatore interno e imposta la nuova vtordisp
impostazione su n. Se n non è specificato, l'impostazione corrente vtordisp
rimane invariata.
pop
Rimuove il record principale dallo stack del compilatore interno e ripristina l'impostazione vtordisp
sul valore rimosso.
n
Specifica il nuovo valore per l'impostazione vtordisp
. I valori possibili sono 0
, 1
o 2
, corrispondenti alle opzioni del /vd0
compilatore , /vd1
e /vd2
. Per altre informazioni, vedere /vd
(Disabilita spostamenti di costruzione).
on
È equivalente a #pragma vtordisp(1)
.
off
È equivalente a #pragma vtordisp(0)
.
Osservazioni:
vtordisp
pragma è applicabile solo al codice che usa le basi virtuali. Se una classe derivata esegue l'override di una funzione virtuale che eredita da una classe base virtuale e se un costruttore o un distruttore per la classe derivata chiama tale funzione usando un puntatore alla classe base virtuale, il compilatore potrebbe introdurre campi nascosti vtordisp
aggiuntivi in classi con basi virtuali.
Influisce vtordisp
pragma sul layout delle classi che lo seguono. Le /vd0
opzioni del compilatore , /vd1
e /vd2
specificano lo stesso comportamento per i moduli completi. Specificando 0
o off
eliminando i membri nascosti vtordisp
. Disattiva vtordisp
solo se non è possibile che i costruttori e i distruttori della classe chiamino funzioni virtuali sull'oggetto a cui punta il this
puntatore.
Specificando 1
o on
, il valore predefinito abilita i membri nascosti vtordisp
in cui sono necessari.
Specificando 2
abilita i membri nascosti vtordisp
per tutte le basi virtuali con funzioni virtuali. #pragma vtordisp(2)
potrebbe essere necessario per garantire prestazioni corrette di dynamic_cast
su un oggetto parzialmente costruito. Per altre informazioni, vedere Avviso del compilatore (livello 1) C4436.
#pragma vtordisp()
, senza argomenti, ripristina l'impostazione vtordisp
iniziale.
#pragma vtordisp(push, 2)
class GetReal : virtual public VBase { ... };
#pragma vtordisp(pop)