共用方式為


vtordisp

C++ 專用

控制項隱藏 vtordisp 建構函式/解構位移成員的加入。

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

參數

  • push
    推入至編譯器內部堆疊的目前 vtordisp 設定並將設定為的新 nvtordisp。 如果 n 未指定,就會使用目前 vtordisp 設定不會改變。

  • pop
    從編譯器內部堆疊中移除第一個資料錄並還原設定 vtordisp 已移除的值。

  • n
    針對各個設定指派新的值。 可能的值為 0、1 或 2,,以/vd0、/vd1 和/vd2 編譯器選項對應。 如需詳細資訊,請參閱 /vd (停用建構替代)

  • on
    相當於 #pragma vtordisp(1)。

  • off
    相當於 #pragma vtordisp(0)。

備註

vtordisp 附註適用的程式碼只會使用虛擬基底。 如果衍生類別覆寫它從虛擬基底類別繼承的虛擬函式,,和,若其中一個建構函式 (Constructor) 或解構函式使用指向虛擬基底類別 (Base Class),編譯器可能會採用不同的隱藏 vtordisp 欄位插入具有虛擬基底類別的衍生類別呼叫的。

vtordisp 附註會影響其後類別的配置。 /vd0、/vd1 和/vd2 選項來指定完整模組指定相同的行為。 指定 0 或 off 隱藏隱藏 vtordisp 成員。 請關閉 vtordisp ,只有在未被類別的建構函式和解構函式在物件上呼叫虛擬函式所指向的 this 指標。

指定 1 或 on,根據預設,會啟用才需要的隱藏 vtordisp 成員。

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

#pragma vtordisp(),沒有引數,還原設定 vtordisp 為它的初始設定。

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

結束特定 C++

請參閱

參考

Pragma 指示詞 」 和 「 __Pragma 關鍵字