protected (C++)
構文
protected:
[member-list]
protected base-class
解説
protected
キーワードは、次のアクセス指定子 (public
または private
) まで、またはクラス定義の最後まで、member-list 内のクラス メンバーへのアクセスを指定します。 protected
として宣言されたクラス メンバーは、次でのみ使用することができます。
これらのメンバーを最初に宣言したクラスのメンバー関数。
これらのメンバーを最初に宣言したクラスのフレンド。
これらのメンバーを最初に宣言したクラスからパブリックまたはプロテクトのアクセス レベルで派生したクラス。
プロテクト メンバーへのプライベート アクセスもできる、プライベートとして設定した直接派生クラス。
基底クラスの名前の前にある protected
キーワードは、基底クラスのパブリック メンバーとプロテクト メンバーがその派生クラスのプロテクト メンバーであることを指定します。
protected メンバーは、宣言されたクラスのメンバーのみがアクセスできる private
メンバーほどプライベートではありませんが、どの関数でもアクセスできる public
メンバーほどパブリックでもありません。
static
としても宣言されたプロテクト メンバーは、派生クラスの任意のフレンド関数またはメンバー関数にアクセスできます。 static
として宣言されていないプロテクト メンバーは、派生クラスへのポインター、参照、または派生クラスのオブジェクトを介してのみ、派生クラス内のフレンドおよびメンバー関数にアクセスできます。
関連情報については、「friend」、「public」、「private」、および「クラス メンバーへのアクセスの制御」のメンバー アクセス テーブルを参照してください。
/clr 固有
CLR 型では、C++ アクセス指定子のキーワード (public
、private
、および protected
) が、アセンブリに関連する型およびメソッドの可視性に影響を与える可能性があります。 詳細については、「メンバー アクセス コントロール」を参照してください。
Note
/LN でコンパイルされるファイルは、この動作に影響を受けません。 この場合、すべてのマネージド クラス (パブリックかプライベート) が表示されます。
END /clr 固有
例
// 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 the derived class
}
関連項目
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示