protected (C++)protected (C++)

구문Syntax

protected:
   [member-list]
protected base-class

설명Remarks

protected 키워드는 다음 액세스 지정자 ( public 또는 private ) 또는 클래스 정의의 끝까지 멤버 목록의 클래스 멤버에 대 한 액세스를 지정 합니다.The protected keyword specifies access to class members in the member-list up to the next access specifier (public or private) or the end of the class definition. 로 선언 된 클래스 멤버 protected 는 다음 에서만 사용할 수 있습니다.Class members declared as protected can be used only by the following:

  • 원래 이 멤버를 선언한 클래스의 멤버 함수Member functions of the class that originally declared these members.

  • 원래 이 멤버를 선언한 클래스의 friendFriends of the class that originally declared these members.

  • 원래 이 멤버를 선언한 클래스에서 공용 또는 보호된 액세스로 파생된 클래스Classes derived with public or protected access from the class that originally declared these members.

  • 보호된 멤버에 대해 전용 액세스 권한이 있으며 전용으로 직접 파생된 클래스Direct privately derived classes that also have private access to protected members.

기본 클래스의 이름 앞에 protected 오는 키워드는 기본 클래스의 공용 및 보호 된 멤버가 파생 클래스의 보호 된 멤버 임을 지정 합니다.When preceding the name of a base class, the protected keyword specifies that the public and protected members of the base class are protected members of its derived classes.

Protected 멤버는 private 선언 된 클래스의 멤버에만 액세스할 수 있는 멤버로 서는 안 되지만 public 모든 함수에서 액세스할 수 있는 멤버 처럼 public이 아닙니다.Protected members are not as private as private members, which are accessible only to members of the class in which they are declared, but they are not as public as public members, which are accessible in any function.

로 선언 된 보호 된 멤버는 static 파생 클래스의 friend 또는 멤버 함수에서 액세스할 수 있습니다.Protected members that are also declared as static are accessible to any friend or member function of a derived class. 로 선언 되지 않은 보호 된 멤버 static 는 파생 클래스의 포인터, 참조 또는 개체를 통해서만 파생 된 클래스의 friend 및 멤버 함수에 액세스할 수 있습니다.Protected members that are not declared as static are accessible to friends and member functions in a derived class only through a pointer to, reference to, or object of the derived class.

관련 정보는 friend, public, private클래스 멤버에 대 한 액세스 제어의 멤버 액세스 테이블을 참조 하세요.For related information, see friend, public, private, and the member-access table in Controlling Access to Class Members.

/clr 관련/clr Specific

CLR 형식에서 c + + 액세스 지정자 키워드 ( public , privateprotected )는 어셈블리와 관련 하 여 형식과 메서드를 표시 하는 데 영향을 줄 수 있습니다.In CLR types, the C++ access specifier keywords (public, private, and protected) can affect the visibility of types and methods with regard to assemblies. 자세한 내용은 Member Access Control를 참조 하세요.For more information, see Member Access Control.

참고

/LN 로 컴파일된 파일은이 동작의 영향을 받지 않습니다.Files compiled with /LN are not affected by this behavior. 이 경우 관리되는 클래스(공용 또는 전용)가 모두 표시됩니다.In this case, all managed classes (either public or private) will be visible.

END /clr 관련END /clr Specific

예제Example

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

참고 항목See also

클래스 멤버에 대한 액세스 제어Controlling Access to Class Members
키워드Keywords