繼承關鍵字

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;

然後,無論您指定的命令列選項或 pragmas,成員的 class S 指標都會使用最小的可能標記法。

注意

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

為了與舊版相容,、 _multiple_inheritance 和 與 是 、 __multiple_inheritance__virtual_inheritance_virtual_inheritance__single_inheritance 同義字, _single_inheritance 除非指定編譯器選項 /Za (停用語言延伸模組)。

END Microsoft 特定的

另請參閱

關鍵字