2015-01-31 3 views
6

이 추상 기본 클래스의 정의 일 수 있습니다 "순수한 가상 메소드를 포함하고 종종 파생 클래스에 대한 인터페이스 사양의 역할"(추상 기본 클래스 정의

또는 추상 기본 클래스는 다른 방법을 포함 할 수 있습니다 또한) 가상 C++ 표준 (§10.4, 추상 클래스, 강조 광산)에서 정의에

+0

"적어도 하나의 순수 가상 메서드가 포함되어 있습니다."는 더 나은 정의입니다. – juanchopanza

+0

하나 이상의 순수 가상 메서드가 포함 된 클래스는 추상 클래스입니다. 여기에는 순수 가상, 가상 및/또는 가상이 아닌 다른 방법이 포함될 수 있습니다. –

+0

순수 가상 만있는 클래스 (다른 메소드 나 데이터 멤버가 없음)는 일반적으로 인터페이스라고합니다. 추상 클래스는 일반 함수도 가질 수있는 인터페이스입니다. 순수 가상 함수로 인해 두 유형 모두 인스턴스화 할 수 없습니다. –

답변

4

:

추상 클래스는 다른의 기본 클래스로만 사용할 수있는 클래스입니다 수업; 추상 클래스의 객체는 그 객체에서 파생 된 클래스의 하위 객체로 제외하고는 작성할 수 없습니다. 이상 하나 인 경우순수 가상 함수 인 경우 클래스는 추상 클래스입니다. [참고 : 이러한 함수는 상속 될 수 있습니다. 아래를 참조하십시오. -end 노트] 예에서

class point {/.../}; 
class shape { // abstract class 
    point center; 
public: 
    point where() { return center; } 
    void move(point p) { center=p; draw(); } 
    virtual void rotate(int) = 0; // pure virtual 
    virtual void draw() = 0; // pure virtual 
}; 

shape (이것은 추상 클래스 만드는)이 개 순수 가상 메소드를 포함하고, 또한이 아닌 가상 메서드가 포함되어 있습니다. 괜찮습니다. 따라서 추상 클래스에 만 포함 된 원래 정의 순수 가상 함수는 너무 제한적입니다. 최소한 하나만 있으면 충분합니다.

+0

그 덕분에 ... 어딘가에 정의를 읽고 정말 혼란스러워 .. !! –

+0

@KaushikReddy 거기에는 이와 같은 몇 가지 정의가 있습니다. 프로그래밍에 대해 더 많이 생각하는 사람들로부터 발생합니다. 추상적 인 사고를 위해서 추상적 인 부분은 추상적이지 않은 부분이 없으면 추상적입니다 (나는 알아야합니다, 저는 학자입니다 ...-))하지만 C++에 관해서 물어 보면, 언어 표준은 규범 적이다. – cmaster

관련 문제