2014-10-22 2 views
3

순수 가상으로 선언 된 메서드에 대한 구현을 제공하면 어떤 효과가 있습니다. 그것은 기본 클래스를 비 추상화합니까? Derived 클래스는 여전히 구현을 제공해야합니까?추상 클래스에서 순수 가상 메서드 구현을 제공합니다.

class Base 
{ 
public: 
    Base(); 
    ~Base(); 

    virtual void abstractMethod() = 0; 

private: 
    uint32_t data; 
}; 

class Derived : public Base 
{ 
public: 
    Derived(); 
    ~Derived(); 
}; 

void Base::abstractMethod() { data = 1; } 

답변

4

순수 가상 함수를 구현해도 규칙은 변경되지 않습니다. 이 함수는 여전히 순수하고 클래스는 여전히 추상 클래스이며 파생 클래스는 아직 구현되지 않은 비 순수 함수로이를 오버라이드해야합니다. 순수한 기능이 구현되어있는 경우

, 다음이 아닌 실질적으로 호출 할 수 있습니다 : 일부 파생 클래스가 사용할 수 있다는 거기에 일반적인 구현 (또는 부분적인 구현) 경우

object.Base::abstractMethod(); 

이 유용 할 수 있습니다 ; 구현을 호출하기 위해 단순히 재정의를 구현할 수 있습니다.

관련 문제