하나 이상의 순수 가상 함수를 포함하는 클래스
가상 함수 : 파생 클래스에서 재정의할 것으로 기대하는 멤버 함수
순수 가상 함수: 파생 클래스에서 반드시 재정의해야 하는 멤버 함수
// 일반 클래스
class A {
public:
virtual void foo(); //가상 함수
};
// 추상 클래스
class A {
public:
virtual void foo() = 0; // 순수 가상 함수
};
- 추상 클래스의 다중 상속으로 인한 모호성 문제를 해결하기 위해 사용
- C++에서 직접적으로 인터페이스 형식을 제공하지는 않지만 순수 가상 함수를 이용하여 정의 가능
- Java나 C# 등의 언어에서는 다중 상속을 금지하였으며, 인터페이스만 다중 상속이 가능
- 언리얼 엔진은 C++ 기반이지만 다중 상속이 금지되었다
클래스의 구분은 추상 클래스 상속을 통해서 해결하고, 공통된 기능들은 인터페이스의 다중 상속을 통해 구현하는 것이 좋다