Share via


vtordisp pragma

控制隱藏 vtordisp 建構/解構位移成員的加入。 vtordisppragma 是 C++特定的 。

語法

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

參數

push
在內部編譯器堆疊上推送目前的 vtordisp 設定,並將新的 vtordisp 設定設定設為 n 。 如果未 指定 n ,則目前的 vtordisp 設定不會變更。

pop
從內部編譯器堆疊移除頂端記錄,並將設定還原 vtordisp 至已移除的值。

n
指定設定的新值 vtordisp 。 可能的值為 0 、、 或 2 ,對應至 /vd0/vd1/vd2 編譯器選項。 1 如需詳細資訊,請參閱 /vd (停用建築排量)。

on
相當於 #pragma vtordisp(1)

off
相當於 #pragma vtordisp(0)

備註

vtordisppragma 僅適用于使用虛擬基底的程式碼。 如果衍生類別覆寫它繼承自虛擬基類的虛擬函式,而且如果衍生類別的建構函式或解構函式會使用虛擬基類的指標呼叫該函式,編譯器可能會將額外的隱藏 vtordisp 欄位引入具有虛擬基底的類別。

會影響 vtordisppragma 其後面的類別配置。 、 /vd1/vd2 編譯 /vd0 程式選項會指定完整模組的相同行為。 指定 0off 隱藏隱藏 vtordisp 的成員。 vtordisp只有在類別的建構函式和解構函式在指標指向 this 的物件上呼叫虛擬函式時,才關閉 。

指定 1on ,預設值會啟用其必要位置的隱藏 vtordisp 成員。

2指定會啟用具有虛擬函式之所有虛擬基底的隱藏 vtordisp 成員。 #pragma vtordisp(2) 可能需要確保部分建構物件的效能 dynamic_cast 正確。 如需詳細資訊,請參閱 編譯器警告(層級 1) C4436

#pragma vtordisp(),沒有引數,會將 vtordisp 設定還原至其初始設定。

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

另請參閱

Pragma 指示詞和 __pragma_Pragma 關鍵字