Condividi tramite


vtordisp pragma

Controlla l'aggiunta del membro di spostamento di costruzione/distruzione nascosto vtordisp . è vtordisppragma 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, 1o 2, corrispondenti alle opzioni del /vd0compilatore , /vd1e /vd2 . Per altre informazioni, vedere /vd (Disabilita spostamenti di costruzione).

on
È equivalente a #pragma vtordisp(1).

off
È equivalente a #pragma vtordisp(0).

Osservazioni:

vtordisppragma è 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 vtordisppragma sul layout delle classi che lo seguono. Le /vd0opzioni del compilatore , /vd1e /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)

Vedi anche

Direttive Pragma e parole __pragma chiave e _Pragma