C++ 인터페이스와 추상클래스

객체지향 설계의 핵심은 구체적인 구현이 아닌 규격에 의존하는 데 있다.

C++에서 인터페이스(Interface)추상 클래스(Abstract Class)를 활용해 유연한 설계를 구현하는 방법을 정리했다.

규격을 정의하는 두 가지 방식

C++은 별도의 interface 키워드가 없는 대신 가상 함수를 통해 이를 표현한다.

  • 추상 클래스: 하나 이상의 가상 함수를 포함하며, 직접 객체를 생성할 수 없는 클래스이다.
    자식 클래스들이 공통으로 가져야 할 로직이나 상태를 상속할 때 사용한다.

  • 인터페이스 (순수 추상 클래스): 모든 멤버 함수가 순수 가상 함수(= 0)로만 구성된 클래스이다.
    해당 클래스를 상속받는 경우 반드시 이 기능들을 구현해야 한다는 규격을 정의한다.

가상 소멸자

다형성을 활용할 때 부모 클래스의 소멸자를 반드시 virtual로 선언해야 한다.

부모 타입 포인터로 자식 객체를 삭제할 때 자식의 소멸자가 정상적으로 호출되어 메모리 누수를 방지할 수 있기 때문이다.

추상화와 설계

구체적인 구현 내용을 몰라도 인터페이스만 알면 코드를 작성할 수 있다는 점이 객체지향의 특징이다.

가상 함수 테이블(vtable)의 동작 원리를 이해하면 런타임에 적절한 함수를 찾아가는 다형성의 원리를 파악할 수 있다.

시스템 설계 능력을 기르기 위해 추상화 개념을 적극 활용해야 하는 것 같다.

Author avatar

웨이호프

WordPress creator and blogger.

View all posts