C++ 인터페이스 설계

추상 클래스 계약 구조

순수 가상 함수는 구현을 미루는 문법이 아니라 파생 클래스가 반드시 지켜야 할 호출 계약을 만드는 장치입니다.

Abstract Base공통 인터페이스
pure virtual
Concrete Classoverride 구현
01

공통 책임 추출

모든 파생 타입이 반드시 제공해야 하는 동작만 기반 클래스에 남깁니다.

02

순수 가상 함수 선언

함수 뒤에 = 0을 붙여 기반 클래스가 직접 구현하지 않음을 표시합니다.

03

파생 구현 강제

파생 클래스는 override로 실제 동작을 제공해야 인스턴스를 만들 수 있습니다.

04

인터페이스로 사용

호출 코드는 구체 타입보다 추상 타입 포인터나 참조에 의존합니다.

추상 클래스 적용 기준

  • 공통 데이터가 거의 없고 동작 계약만 필요하면 인터페이스형 추상 클래스가 적합합니다.
  • 기반 클래스 소멸자는 다형적 삭제 가능성을 고려해 virtual로 둡니다.
  • 순수 가상 함수가 많아질수록 책임이 과하게 섞인 것은 아닌지 점검합니다.

추상 클래스 문법

= 0순수 가상
override구현 검증
abstract직접 생성 불가