2014-07-07 1 views
1

나는 C++ 클래스 액세스 수정 자에 대해이 질문을 가지고 있습니다. 내가 클래스 A에서 공공 액세스 할 수있는 다른 클래스라는 C를 만드는 경우C++ 클래스 개인 액세스 한정자

class A 
{ 
public: 
    int a1; 
private: 
    int a2; 
} 

는 다음 변수 A1 클래스의 C. 경우]에 공개됩니다 : 나는 기본 클래스가있는 경우는 다음과 같습니다 가정 해 봅시다 접근이 비공개, 다음 A1 클래스 C에 대한 개인 수 있지만 클래스 C는 클래스 A의 액세스를 보호 한 경우 I는 클래스 C 만드는 경우, 다음 A2 내 질문은 클래스 C의 개인 될 것입니다 :

class C: private A 
{ 
public: 
    int c1; 
private: 
    int c2; 
} 

을 그렇다면 클래스 C에 개인 a2가 있지만 클래스 C의 공용 변수가 될 클래스 A의 변수 a1입니까? 기본 클래스의 접근성

+0

가장 좋은 예제의 개인 회원으로 액세스 할 수 있습니다 이것을 이해하십시오 http://stackoverflow.com/questions/2156913/does-protected-inheritance-allow-the-derived-class-access-the-private-members-of – Kasma

+0

감사합니다. 도움이되었습니다! – user3812539

답변

2

규칙은 [class.access.base] 1 클래스에 선언하면 기본 클래스와 기본 클래스 멤버의 C++ 표준

11.2 접근성에서 다음 인용문에 설명되어 있습니다 공용 액세스 지정자를 사용하는 다른 클래스의 기본 클래스 (10 절) 인 경우 기본 클래스의 public 멤버 의 public 멤버로 액세스 할 수 있으며 기본 클래스의 보호 된 멤버는 의 보호 멤버로 액세스 할 수 있습니다. 파생 클래스 보호 된 액세스 지정자를 사용하는 다른 클래스의 기본 클래스로 선언 된 클래스가 인 경우 기본 클래스 의 public 및 protected 멤버는 파생 클래스의 보호 된 멤버로 액세스 할 수 있습니다. 클래스 민간 액세스 지정자를 사용하여 다른 클래스의 기본 클래스로 선언 된 경우 , 기본 클래스 의 공개 및 보호 된 멤버는 파생 클래스