본문 바로가기
카테고리 없음

순수 가상 함수, 추상 클래스에 대하여

by sftt 2023. 12. 5.

순수 가상 함수, 추상 클래스에 대하여

추상 클래스와 순수 가상 함수

추상 클래스는 인스턴스를 생성할 수 없는 클래스이며, 최소 한 개 이상의 순수 가상 함수를 포함하는 클래스입니다. 순수 가상 함수는 함수의 구현을 제공하지 않고, 파생 클래스에서 이를 재정의하도록 강제하는 함수입니다. 추상 클래스는 다른 클래스로 상속을 위한 기본 틀을 제공하고, 파생 클래스에서 공통된 인터페이스를 정의하는 데 사용됩니다.

추상 클래스의 선언

추상 클래스는 다음과 같은 형식으로 선언됩니다:

class AbstractClass {
  public:
    virtual void pureVirtualFunction() = 0;  // 순수 가상 함수
    void nonVirtualFunction() {
        // 구현
    }
};

위의 예제에서 pureVirtualFunction()은 추상 클래스 AbstractClass에 속한 순수 가상 함수입니다. 이 함수는 = 0으로 표시되어있으며, 파생 클래스에서 구현되어야 할 것을 나타냅니다.

추상 클래스의 사용

추상 클래스는 인스턴스를 직접 생성할 수 없지만, 포인터나 참조를 사용하여 추상 클래스의 파생 클래스에 접근할 수 있습니다.

AbstractClass* ptr = new DerivedClass(); // 추상 클래스 포인터로 파생 클래스를 가리킬 수 있음

또한, 추상 클래스를 상속한 파생 클래스는 순수 가상 함수를 구현해야 합니다. 그렇지 않으면 컴파일 오류가 발생합니다.

추상 클래스의 장점

  • 추상 클래스는 상속을 통해 다형성을 구현할 수 있습니다. 여러 다른 클래스가 공통된 기능을 가지고 있을 때, 이를 추상 클래스로 정의하고 파생 클래스에서 이를 구현함으로써 중복을 피하고 유연성을 확보할 수 있습니다.
  • 추상 클래스는 인터페이스를 제공하는 역할을 합니다. 파생 클래스에서 추상 클래스의 순수 가상 함수를 구현함으로써 인터페이스에 대한 표준 정의를 제공할 수 있습니다.

순수 가상 함수와 추상 클래스는 C++에서 다형성을 구현하는 강력한 도구입니다. 추상 클래스의 사용은 코드의 재사용성과 확장성을 향상시키는 데 도움이 되며, 객체 지향 프로그래밍의 주요한 개념 중 하나입니다.

댓글