クラス メンバーの宣言構文
データ メンバー関数をクラスとメンバーは宣言の規則に従って一般的に宣言されています。これらはこの順序で構成されます :
宣言で指定されています。クラスではストレージ クラスの指定子 静的 と 変更可能 はデータ メンバーに付与されます。cv 修飾子 定数 と volatile は関数とデータ メンバーに付与されます。friend が非メンバー関数を示していますが宣言の指定子 friend 静的 仮想 と インライン は関数で使用されます。
初期化子を除いた宣言。仮想関数の場合この関数は純粋仮想クラスの実装が仮想関数) を指定するにはフォーム = 0 の純粋指定子を使用すると関数の宣言されています。
必要に応じてビット フィールド。 ビット フィールドを 参照してください。
OR
- 関数定義。関数のシグネチャはクラスに含めることができます。メンバー関数が定義されている場合は自動的にインライン見なされます。
OR
- メンバーのテンプレート (クラス テンプレートのメンバー の C++ メンバー テンプレート内のコメントを参照してください)。
メンバーのデータ 自動 はexternまたは 登録 のストレージ クラスとして宣言することはできません。ただしこれらは 静的 ストレージ クラスがとして宣言されています。
メンバー一覧に 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 のクラスを継承するクラスは純粋仮想関数を実装する必要があります。; それ以外の場合はがでは抽象基本クラスと見なされます。
抽象基本クラスがオブジェクトを宣言することはできません。たとえばStrBase から継承された型のオブジェクトを宣言することは関数 IsLessThanIsEqualTo と CopyOf を実装する必要があります。(抽象基本クラスに関する詳細については抽象クラス を参照してください)。