2011-01-12 2 views

답변

3

정확하게 질문을 이해할 수 있을지 모르겠지만 선언 된 모든 메소드를 추상 기본 클래스로 구현해야합니다. 그렇지 않으면 자연스럽게 클래스도 추상으로 간주됩니다.

+0

정확하지만 용어가 약간 씩 떨어져 있습니다. 순수한 방법을 모두 기본으로 구현해야합니다. 순수한 메소드를 구현하는 것이 가능합니다. 이것은 순수한 dtors의 구현에서 가장 일반적으로 나타납니다. –

2

클래스가 "순수 가상"(즉, "= 0")을 선언하거나이를 재정의하지 않고 순수 가상 메소드를 상속하는 경우 클래스는 추상 클래스입니다.

2
class A 
{ 
public: 
    virtual void fun() = 0; //"pure" virtual function 
    virtual void gun() = 0; //"pure" virtual function 

    virtual void sun() //virtual function - "not pure" 
    { 
     /***** implementation code *****/ 
    } 
}; 

여기서 A은 두 개의 순수 가상 기능을 가지고 있으므로 추상 클래스입니다.

class B : public A 
{ 
public: 
    virtual void fun() 
    { 
     /******* implementation code ********/ 
    } 
}; 

질문 :B 무엇입니까? 그것은 추상적이지 않은가? 결국, 가상 함수는 fun()이라고 정의되었거나 구현 되었습니까?

답변 : 번호 B 너무 추상 클래스는 정의하지 않았기 때문에/너무 기본 클래스 A에서 순수 가상 함수 인 gun()을 구현합니다. 중 하나만 정의하면 이라는 가상 함수 가상 함수는 추상화되지 않습니다. 그것은 모든 순수한 가상 함수를 정의해야합니다. 모두는 가상 함수가있는만큼 ALL을 의미합니다.

두 가지 중요한 메모는 다음과 같습니다. 1) 순수 가상 기능 2) 모두 정의하십시오. 그때 만 수업은 콘크리트/비 추상적으로 될 수 있습니다!

관련 문제