기본 클래스에 대 한 액세스 지정자
기본 클래스의 멤버를 파생된 클래스에서 액세스할 수 있는 두 가지 요소 컨트롤입니다. 파생된 클래스에서 상속 된 멤버에 액세스할 수 이러한 같은 요소를 제어합니다.
여부는 파생된 클래스 사용 하 여 기본 클래스를 선언는 공용 액세스 지정자에는 클래스 머리 (클래스 머리 문법 섹션에서 설명한 클래스 형식 정의).
어떤 기본 클래스의 해당 멤버에 대 한 액세스가입니다.
다음 표에서 이러한 요소와 기본 클래스 멤버에 액세스를 확인 하는 방법을 보여 줍니다.
기본 클래스에서 멤버에 액세스
private |
protected |
Public |
---|---|---|
파생 액세스에 관계 없이 항상 액세스할 수 없습니다 |
개인 전용 파생을 사용 하는 경우 파생된 클래스에서 |
개인 전용 파생을 사용 하는 경우 파생된 클래스에서 |
|
파생된 클래스에서 보호 된 파생을 사용 하는 경우 보호 |
파생된 클래스에서 보호 된 파생을 사용 하는 경우 보호 |
|
Public 파생을 사용 하는 경우 파생된 클래스에서 보호 된. |
Public 파생을 사용 하는 경우 파생된 클래스에서 공개 |
다음 예제는 이러한 과정을 보여 줍니다.
// access_specifiers_for_base_classes.cpp
class BaseClass
{
public:
int PublicFunc(); // Declare a public member.
protected:
int ProtectedFunc(); // Declare a protected member.
private:
int PrivateFunc(); // Declare a private member.
};
// Declare two classes derived from BaseClass.
class DerivedClass1 : public BaseClass
{
};
class DerivedClass2 : private BaseClass
{
};
int main()
{
}
DerivedClass1, 멤버 함수 PublicFunc public 구성원 인 및 ProtectedFunc 때문에 보호 된 멤버는 BaseClass 공용 기본 클래스입니다.PrivateFuncprivate입니다 BaseClass, 및 모든 파생된 클래스에 액세스할 수 없습니다.
DerivedClass2, 함수 PublicFunc 및 ProtectedFunc 전용 멤버는 때문에 간주 됩니다 BaseClass 개인 기본 클래스입니다.다시 PrivateFunc 개인 하는 BaseClass, 및 모든 파생된 클래스에 액세스할 수 없습니다.
파생된 클래스는 기본 클래스 액세스 지정자 없이 선언할 수 있습니다.이 경우 파생 파생된 클래스 선언을 사용 하는 경우 개인 것으로 간주 됩니다의 클래스 키워드입니다.파생 파생된 클래스 선언을 사용 하는 경우에 공용으로 간주 되는 struct 키워드입니다.예를 들어, 다음 코드에서
class Derived : Base
...
다음과 동일합니다.
class Derived : private Base
...
마찬가지로 다음 코드:
struct Derived : Base
...
다음과 동일합니다.
struct Derived : public Base
...
개인 액세스를 갖고 있는 것으로 선언 된 멤버 함수에 액세스할 수 있는지 확인 하거나 이러한 함수 또는 클래스를 사용 하 여 선언 하지 않으면 파생 클래스는 friend 기본 클래스에서 선언 됩니다.
A union 형식에 기본 클래스를 사용할 수 없습니다.
[!참고]
개인 기본 클래스를 지정 하는 경우를 명시적으로 사용 하는 것이 되는 private 사용자가 파생된 클래스의 멤버 액세스를 이해 하도록 하는 키워드입니다.