Microsoft 專屬的
classclass-name
class __single_inheritanceclass-name
class __multiple_inheritanceclass-name
class __virtual_inheritanceclass-name
地點:
class-name
要宣告之類別的名稱。
C++可讓您在類別定義之前宣告類別成員的指標。 例如:
class S;
int S::*p;
在上述程式代碼中, p 宣告為類別 S 之整數成員的指標。不過, class S 尚未在此程式代碼中定義;它只會宣告。 當編譯程式遇到這類指標時,它必須產生指標的一般化表示法。 表示的大小取決於指定的繼承模型。 有三種方式可將繼承模型指定給編譯程式:
使用
/vmg參數在命令行pointers_to_members使用 pragma使用繼承關鍵字
__single_inheritance、__multiple_inheritance與__virtual_inheritance。 這項技術會根據每個類別控制繼承模型。備註
如果您在定義類別之後一律宣告類別成員的指標,則不需要使用這些選項。
如果您在定義類別之前宣告類別成員的指標,可能會對產生的可執行檔的大小和速度造成負面影響。 類別所使用的繼承越複雜,表示類別成員的指標所需的位元元組數目愈大。 而且,解譯指標所需的程式代碼愈大。 單一(或否)繼承最不複雜,而虛擬繼承最複雜。 定義類別之前所宣告成員的指標一律會使用最大、最複雜的表示法。
如果上述範例變更為:
class __single_inheritance S;
int S::*p;
然後,無論您指定的命令行選項或 pragmas,成員的 class S 指標都會使用最小的可能表示法。
備註
類別指針對成員表示法的相同向前宣告應該發生在宣告該類別成員之指標的每個轉譯單位中,而且宣告應該在宣告成員的指標之前發生。
為了與舊版相容,、 _multiple_inheritance和 是 、 __multiple_inheritance__virtual_inheritance 和 _virtual_inheritance 的__single_inheritance同義字,_single_inheritance除非指定編譯程式選項 /Za (停用語言延伸模組)。
結束 Microsoft 特定內容