繼承關鍵字
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 特定的
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應