共用方式為


/vd (停用建構替代)

語法

/vdn

引數

0
隱藏 vtordisp 建構函式/解構函式位移成員。 只有在您確定所有類別建構函式和解構函式幾乎都會呼叫虛擬函式時,才選擇此選項。

1
可讓您建立隱藏的 vtordisp 建構函式/解構函式位移成員。 這個選擇是預設值。

2
可讓您 在建構的物件上使用 dynamic_cast Operator 。 例如,從虛擬基類到衍生類別的dynamic_cast。

當您有具有虛擬函式的虛擬基底時,/vd2 會新增 vtordisp 欄位。 /vd1 應該已足夠。 最常見的案例 是當虛擬基底中唯一的虛擬函式是解構函式時,需要 /vd2

備註

這些選項僅適用于使用虛擬基底的 C++ 程式碼。

Visual C++ 會在使用虛擬繼承的情況下實作 C++ 建構置置支援。 建構位移可解決在虛擬基底中宣告並在衍生類別中覆寫虛擬函式時所建立的問題,會在建構進一步衍生類別時從建構函式呼叫。

問題是,虛擬函式可能會因為位移至類別的虛擬基底與衍生類別的位移差異而傳遞不正確的 this 指標。 解決方案會針對類別的每個虛擬基底,提供稱為 vtordisp 欄位的單一建構位移調整。

根據預設,每當程式碼定義使用者定義的建構函式和解構函式,也會覆寫虛擬基底的虛擬函式時,就會引進 vtordisp 欄位。

這些選項會影響整個原始程式檔。 使用 vtordisp 來隱藏,然後依類別重新啟用 vtordisp 欄位。

在 Visual Studio 開發環境中設定這個編譯器選項

  1. 開啟專案的 [屬性頁] 對話方塊。 如需詳細資料,請參閱在 Visual Studio 中設定 C ++ 編譯器和組建屬性

  2. 選取 [組態屬性]>[C/C++]>[命令列] 屬性頁。

  3. 在 [ 其他選項 ] 方塊中輸入編譯器選項。

若要以程式方式設定這個編譯器選項

另請參閱

MSVC 編譯器選項
MSVC 編譯器命令列語法