vtordisp
pragma
控制隱藏 vtordisp
建構/解構位移成員的加入。 vtordisp
pragma是特定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)
。
備註
vtordisp
pragma僅適用於使用虛擬基底的程序代碼。 如果衍生類別覆寫它繼承自虛擬基類的虛擬函式,而且如果衍生類別的建構函式或解構函式會使用虛擬基類的指標呼叫該函式,編譯程式可能會將額外的隱藏 vtordisp
欄位引入具有虛擬基底的類別。
會影響 vtordisp
pragma 其後面的類別配置。 、 /vd1
和 /vd2
編譯/vd0
程式選項會指定完整模組的相同行為。 指定 0
或 off
隱藏隱藏 vtordisp
的成員。 vtordisp
只有在類別的建構函式和解構函式在指標指向this
的物件上呼叫虛擬函式時,才關閉 。
指定 1
或 on
,預設值會啟用其必要位置的隱藏 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)