基本クラスのアクセス指定子
基本クラスのメンバーを派生クラスからアクセスできる 2 種類の要素をコントロール ; これらの派生クラスの継承メンバーに同じ要素のアクセスを制御する :
派生クラスは クラス の ヘッダー パブリック のアクセス指定子を使用して基本クラス ( クラス 宣言するかどうか は クラス型の定義 ヘッダー の文法セクションで説明します)。
メンバーへのアクセスが基本クラスであるの数。
次の表にこれらの要素間の相互作用を基本クラスのメンバーのアクセスを決定する方法を示します。
基本クラスのメンバーのアクセス
private |
protected |
Public |
---|---|---|
派生のアクセスに関係なく常にアクセスできない |
プライベート派生を使用する場合は派生クラスのプライベート |
プライベート派生を使用する場合は派生クラスのプライベート |
|
保護された派生を使用する場合は派生クラスで保護する |
保護された派生を使用する場合は派生クラスで保護する |
|
パブリック派生に使用する場合は派生クラスで保護する |
パブリック派生に使用する場合は派生クラスのパブリック メソッド |
次に例を示します。
// access_specifiers_for_base_classes.cpp
class BaseClass
{
public:
int PublicFunc(); // Declare a public member.
protected:
int ProtectedFunc(); // Declare a protected member.
private:
int PrivateFunc(); // Declare a private member.
};
// Declare two classes derived from BaseClass.
class DerivedClass1 : public BaseClass
{
};
class DerivedClass2 : private BaseClass
{
};
int main()
{
}
DerivedClass1 にはメンバー関数 PublicFuncパブリック メンバーでありBaseClass がパブリックの基本クラスであるため ProtectedFunc はプロテクト メンバーです。PrivateFunc は BaseClass に対してプライベートであり派生クラスにアクセスできません。
DerivedClass2 ではBaseClass がプライベート基本クラスであるため関数 PublicFunc と ProtectedFunc はプライベート メンバーと見なされます。さらにPrivateFunc は BaseClass に対してプライベートであり派生クラスにアクセスできません。
基本クラスに対するアクセス指定子がない場合派生クラスを宣言できます。この場合派生は派生クラス宣言を クラス のキーワードを使用してプライベートであると見なされます。派生は派生クラス宣言を struct のキーワードを使用するとパブリックと見なされます。コード例を次に示します。
class Derived : Base
...
上の式は、下の式と同等です。
class Derived : private Base
...
同様に次のコード :
struct Derived : Base
...
上の式は、下の式と同等です。
struct Derived : public Base
...
これらの関数やクラスが基本クラスの friend の宣言を使用して宣言されていないプライベート アクセス権を持っているとして宣言されたメンバーは関数または派生クラスからアクセスできないことに注意してください。
共用体 の型は基本クラスを指定することはできません。
[!メモ]
プライベート基本クラスを指定する場合は明示的に private ため派生クラスでキーワードを使用すると勧められるメンバーのアクセスについて理解します。