2015-01-29 3 views
0

추상 클래스는 기본 클래스와 동일한 것입니까?추상 클래스는 기본 클래스와 동일한 것입니까?

때때로 나는 기본 클래스라는 용어를 사용합니다. 그러나 이것이 의미하는 바를 찾아 보면 "추상 클래스"가 던져지는 경향이 있습니다.

기본적으로 똑같은 두 단어입니까?

+1

추상 기본 클래스와 비 추상 기본 클래스가있을 수 있습니다. –

+4

아니요. 추상 클래스는 항상 기본 클래스이지만 그 반대는 아닙니다. –

답변

2

이것은 일반적인 기본 클래스 다각형입니다 :

class Polygon { 
    protected: 
    int width, height; 
    public: 
    void set_values (int a, int b) 
     { width=a; height=b; } 
    virtual int area() 
     { return 0; } 
}; 

class Rectangle: public Polygon { 
    public: 
    int area() 
     { return width * height; } 
}; 

class Triangle: public Polygon { 
    public: 
    int area() 
     { return (width * height/2); } 
}; 

추상 기본 클래스는 앞의 예에서 다각형 클래스와 매우 비슷한 있습니다. 이 클래스는 기본 클래스로만 사용할 수있는 클래스이므로 (인스턴스화 할 수 없음) 정의없이 가상 멤버 함수를 가질 수 있습니다 (순수 가상 함수라고 함).

추상 기본 다각형 클래스는 다음과 같이 수 :

// abstract class CPolygon 
class Polygon { 
    protected: 
    int width, height; 
    public: 
    void set_values (int a, int b) 
     { width=a; height=b; } 
    virtual int area() =0; 
}; 
+1

그리고'virtual int area() = 0;의 효과는 실제로 무엇입니까? 언제 적용됩니까? –

+2

기본 클래스에는 구현이 없다는 것을 의미하며 기본 클래스에서 파생 된 모든 클래스는'int area()'를 구현해야합니다. 그렇지 않으면 코드가 컴파일되지 않습니다 – Kam

1

하나의 실제적인 차이점은이 만들 수 있다는 것입니다 구문은 = 0으로 정의 (및 등호와 제로)를 대체하는 것입니다 추상 기본 클래스의 객체 은 비 추상 기본 클래스의 객체를 만들 수 있습니다. 이 차이점은 어느 것이 언제 사용할 것인지를 결정하기에 충분합니다. :)