2009-09-07 8 views
1

C++에서는 하위 클래스가 기본 클래스의 정적 필드 및 메서드를 "숨길"수 있습니까? (즉, A는 int 형, B의 ABC라는 이름의 필드가합니다 : A ~ B는 int 형의 ABC라는 이름의 필드가) 아마C++ : 기본 정적 멤버 숨기기

답변

6
#include <iostream> 

using namespace std; 

class A{ 
    public: 
    static int a; 
}; 

class B: public A{ 
    public: 
     static int a; // hide base member 

}; 

int A::a; 
int B::a; 
int main(){ 
    A::a=10; 
    B::a=20; 

    B k; 
    cout << "\n" << B::a << k.a; 
return 0; 
} 
+0

아, 아무것도 할 필요가 없나요? 그냥 효과가 있니? – jameszhao00

+0

예, 숨겨집니다 (클라이언트는 기본 클래스 이름을 명시 적으로 지정하면 기본 클래스 멤버에 액세스 할 수 있습니다 (예 : A :: a). – ChrisW

+0

또는'B :: A :: a' (이것은 같은 것입니다) –

3

:

class B : private A 
{ 
... 
}; 

이 아니라 정적하지만 모든 것을 숨길 것이다.

+1

세미콜론 종료가 없습니다. ; D – strager

+0

고정. 고마워, @ 스트 래거. – Andrew

2

개인적으로 상속 하시겠습니까?

class B : private A { 
    // ... 
};