類別成員宣告語法
類別資料成員和函式成員通常會宣告下列宣告規則。它們依此順序由下列各項組成:
宣告規範。在類別中,儲存類別規範 static 和 mutable 允許資料成員。cv 限定詞 const 和 volatile 允許資料和函式成員。宣告規範 friend、static、virtual 和 inline 允許函式,不過 friend 表示非成員函式。
沒有初始設定式的宣告子。使用虛擬函式時,會在函式宣告子的後方使用 = 0 形式的純虛擬函式規範來指定純虛擬函式 (在該類別中沒有實作的虛擬函式)。
或者可使用位元欄位。請參閱位元欄位。
OR
- 函式定義。函式的定義可以包含在類別中。如果成員函式是以此種方式定義,則會自動將其視為內嵌。
OR
- 成員樣板 (請參閱類別樣板的成員中 C++ 成員樣板的註解)。
成員資料不可以宣告為 auto、extern 或 register 儲存類別。 不過,它們可以宣告為具有 static 儲存類別。
當您在成員清單中宣告一個 friend 類別時,可以省略成員宣告子清單。 如需 friend 的詳細資訊,請參閱 friend 規範和 friend。 即使未引入類別名稱,也可以在 friend 宣告中使用它。 這個 friend 宣告會引入名稱。 不過,在這種類別的成員宣告中必須使用複雜的類型規範語法,如下列範例所示:
// class_member_declaration_syntax.cpp
// compile with: /c
struct HasFriends {
friend class NotDeclaredYet;
};
上述範例中,在類別宣告之後沒有任何成員宣告子清單。 由於尚未處理 NotDeclaredYet 的宣告,因此會使用複雜的類型規範形式:class NotDeclaredYet。 已宣告的類型可以使用一般類型規範,在 friend 成員宣告中指定:
// class_member_declaration_syntax2.cpp
// compile with: /c
struct AlreadyDeclared {};
struct HasFriends {
friend AlreadyDeclared;
};
純虛擬函式規範 (在下列範例中顯示) 表示未實作已宣告的虛擬函式。 因此,純虛擬函式規範只可以在虛擬函式中指定。 請考量以下範例:
// class_member_declaration_syntax3.cpp
// compile with: /c
class StrBase { // Base class for strings.
public:
virtual int IsLessThan( StrBase& ) = 0;
virtual int IsEqualTo( StrBase& ) = 0;
virtual StrBase& CopyOf( StrBase& ) = 0;
};
上述程式碼宣告一個抽象基底類別,也就是說,該類別被設計為只能當做其他更明確類別的基底類別使用。 此類基底類別可以強制執行特定通訊協定或一組功能,方法是使用純虛擬函式規範將一個或多個虛擬函式宣告為「純」虛擬函式。
繼承自 StrBase 類別的類別必須提供純虛擬函式的實作,否則同樣會被視為是抽象基底類別。
抽象基底類別不能用來宣告物件。 例如,您必須先實作 IsLessThan、IsEqualTo 和 CopyOf 函式,才可以宣告繼承自 StrBase 之類型的物件。(如需抽象基底類別的詳細資訊,請參閱抽象類別)。