プロテクト (C++)
protected:
[member-list]
protected base-class
解説
protected のキーワードは次に示すアクセス指定子が メンバー リスト ( パブリック または private) またはクラス定義の最後のクラス メンバーへのアクセスを指定します。protected として宣言されたクラス メンバーはのみですがあります :
最初にこれらのメンバーを宣言したクラスのメンバー関数。
最初にこれらのメンバーを宣言したクラスの Friend
クラスはパブリックと取得またはではこれらのメンバーを宣言したクラスからアクセスを保護します。
プライベートまたはプロテクト メンバーにアクセスできる派生クラスをプライベートに指示します。
基本クラスの名前を指定するとprotected のキーワードは基本クラスのパブリック メンバーとプロテクト メンバーは派生クラスのプロテクト メンバーであることを指定します。
プロテクト メンバーが宣言されているが関数でアクセスできる パブリック のメンバーほどパブリックでないクラスのメンバーだけがアクセスできる private ほどのプライベート メンバーではありません。
静的 が派生クラスのフレンド関数またはメンバーにアクセスできるため宣言されたプロテクト メンバー。 静的 がポインターを介してのみ派生クラスのフレンドおよびメンバー関数からはアクセスできませんがであるため宣言されていないプロテクト メンバーに派生クラスのオブジェクト参照します。
関連情報についてはクラス メンバーへのアクセスの制御 の Friendパブリックプライベート およびメンバー アクセスの表を参照してください。
/clr の指定
CLR 型ではC++ のアクセス指定子のキーワード ( パブリック private と protected) はアセンブリに対して型およびメソッドの表示に影響を及ぼすことがあります。詳細については、「型およびメンバーの表示」を参照してください。
[!メモ]
/LN でコンパイル ファイルではこの動作の影響を受けません。この場合すべてのマネージ クラス (public または private) 表示されます。
使用例
// keyword_protected.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
class X {
public:
void setProtMemb( int i ) { m_protMemb = i; }
void Display() { cout << m_protMemb << endl; }
protected:
int m_protMemb;
void Protfunc() { cout << "\nAccess allowed\n"; }
} x;
class Y : public X {
public:
void useProtfunc() { Protfunc(); }
} y;
int main() {
// x.m_protMemb; error, m_protMemb is protected
x.setProtMemb( 0 ); // OK, uses public access function
x.Display();
y.setProtMemb( 5 ); // OK, uses public access function
y.Display();
// x.Protfunc(); error, Protfunc() is protected
y.useProtfunc(); // OK, uses public access function
// in derived class
}