반응형

추상 클래스(Abstract Class)

  • 순수 가상 함수(Pure Virtual Function)
    • 함수 구현부가 없고 선언부가 "=0"으로 끝나는 가상함수
  • 추상 클래스(Abstract Class)
    • 순수 가상 함수가 한개 이상 있는 클래스
  • 추상 클래스 특징
    • 객체를 만들 수 없음
    • 포인터 타입은 만들 수 있음
  • 추상클래스로 부터 상속 받은 클래스가 순수 가상함수의 구현부를 제공하지 않으면 추상 클래스
  • 추상 클래스의 의도
    • 파생 클래스에게 특정 함수를 반드시 구현을 지시하는 것
    • 인터페이스
#include <iostream>
#include <vector>

// 추상 클래스
class Shape
{
public:
    virtual void Draw() = 0; // 순수 가상함수
};

// 구체 클래스(concerect class)
class Rect : public Shape
{
public:
    virtual void Draw() override
    {

    }
};

int main()
{
    Shape* p; // 추상클래스 포인트는 만들 수 있음
    Rect r; // 추상 클래스를 상속받은 클래스에서 순수 가상함수를 구현하지 않으면 error
}

 

반응형

+ Recent posts