보호 된 (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
}