共用方式為


繼承關鍵字

Microsoft 特定的

class class-name
class __single_inheritance class-name
class __multiple_inheritance class-name
class __virtual_inheritance class-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;

然後,無論您指定的命令列選項或 pragma 為何,class S 成員的指標都會盡可能使用最小的表示法。

注意

類別成員指標表示法的同一個向前宣告應出現在宣告該類別成員指標的每一個轉譯單位中,而且宣告應在成員指標宣告之前發生。

為了與舊版相容,除非指定了編譯器選項 /Za (停用語言延伸模組),否則 _single_inheritance_multiple_inheritance_virtual_inheritance__single_inheritance__multiple_inheritance__virtual_inheritance 的同義字。

END Microsoft 特定的

另請參閱

關鍵字