다음을 통해 공유


보호 된 (C++)

protected:
   [member-list]
protected base-class

설명

protected 키워드를 클래스 멤버에 액세스를 지정 합니다.의 멤버 목록 다음 액세스 지정자에 (공개 또는 private) 클래스 정의의 끝입니다.클래스 멤버를 선언 하는 protected 다음에만 사용할 수 있습니다.

  • 원래이 멤버를 선언 하는 클래스의 멤버 함수입니다.

  • 원래이 멤버를 선언 하는 클래스의 친구.

  • 공용 또는 보호 된 액세스를 원래이 멤버를 선언 하는 클래스에서 파생 하는 클래스입니다.

  • 보호 된 멤버를 private 액세스를 가진 직접 개인적으로 파생 된 클래스입니다.

기본 클래스의 이름 앞에 오는 경우는 protected 공용 및 보호 된 멤버는 기본 클래스의 보호 된 멤버는 파생된 클래스의 되는 키워드를 지정 합니다.

보호 된 멤버는 private으로 하지 않습니다 private 는 선언 되지만 공용으로 클래스의 멤버에만 액세스할 수 있는 멤버를 공용 모든 기능에 액세스할 수 있는 멤버입니다.

도로 선언 된 멤버에 보호 된 정적 파생된 클래스의 friend 또는 멤버 함수에 액세스할 수 있습니다.보호 된 멤버는 선언 된 정적 친구 들만을 참조 하는 포인터 또는 파생 된 클래스의 개체를 통해 파생된 클래스의 멤버 함수에 액세스할 수 있습니다.

관련된 정보를 참조 하십시오. 친구, public, 개인, 및 멤버 액세스 테이블에 클래스 멤버에 대 한 액세스를 제어.

/clr 관련

CLR 형식에 C++를 액세스 지정자 키워드 (public, private, 및 protected) 형식과 어셈블리와 관련 하 여 메서드의 표시 여부에 영향을 줄 수 있습니다.자세한 내용은 형식 및 멤버 표시를 참조하십시오.

[!참고]

파일을 사용 하 여 컴파일한 /LN 이 동작에 의해 영향을 받지 않습니다.이 경우 관리 되는 클래스 (공용 또는 개인)을 모두 볼 수 있습니다.

예제

// 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
}

참고 항목

참조

클래스 멤버에 대 한 액세스 제어

C + + 키워드