2014-01-16 4 views
0

C++ 파생 클래스가 상속 될 수 있습니까? 정적 데이터 멤버 및 기본 클래스의 정적 멤버 함수가 있습니까?C++ 파생 클래스는 상속받을 수 있습니까? 정적 데이터 멤버 및 기본 클래스의 정적 멤버 함수가 있습니까?

class Base 
{ 
public: 
    static int base1; 
    static void function1() {}; 
protected: 
    static int base2; 
    static void function2() {}; 
} 

class Derived : public Base 
{ 
public: 
    int a; 
protected: 
    int b; 
} 

Derivedbase1, base2function1function2이 있습니까?

클래스에 Derived 클래스가있는 경우 기본 클래스에서 상속 한 protected 데이터와 public 데이터의 관계는 무엇입니까? 그들은 같은가요? 또는 상속 데이터이며 해당 기본 클래스의 복사본을 작동합니까?

답변

2

static 회원은하지 을 상속하지만 그들은 여전히 ​​접근 있습니다 있습니다. 즉 파생 형식의 버전은 없지만 여전히 액세스 할 수 있으며 기본 정적 멤버에 직접 액세스하는 경우와 동일합니다. 정적 데이터 멤버는 모든 개체에 공통적이므로

+0

명확성을 위해 비 정적 데이터 멤버와 멤버 함수가 "상속"되었습니까? 그렇다면 정적 함수의 "상속되지 않은"특성과 어떻게 다른가요? –

+0

@SteveJessop : 그것은 대답하기가 훨씬 더 어려운 질문이며 상속 된 *이 무엇을 의미하는지에 대한 정확한 정의가 필요합니다. 파생 형 *은 기본 객체의 인스턴스를 하위 객체로 포함하므로 비 정적 데이터 멤버는 액세스 지정자에 따라 직접 사용할 수도 있고 사용하지 못할 수도 있지만 * 정적 멤버는 * there *입니다. 차이점은 비 정적 멤버를 수정할 때이 오브젝트의 일부를 수정하지만 정적 멤버를 수정할 때베이스의 정적 멤버를 수정한다는 것입니다. 다른 사람이 Base의 정적 멤버를 수정하면 표시되는 값이 변경됩니다. –

관련 문제