ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [UE5] 순수 가상 함수(Pure Virtual Function)
    UE5 2024. 12. 6. 05:34
    virtual void FunctionName() = 0;

     

    • 순수 가상 함수는 함수의 구현체(내용)가 없고, 파생 클래스에서 반드시 구현해야 하는 함수
    • 클래스 선언에서   = 0   을 사용하여 정의
    • 순수 가상 함수는 기본 클래스가 추상 클래스(Abstract Class)가 되도록 만듬
    • 추상 클래스는 직접 객체를 생성할 수 없으며, 오직 파생 클래스에서만 사용
    class IPlayerScoreListener
    {
    public:
        virtual void OnPlayerScoreChanged(int32 NewPlayerScore) = 0; // 순수 가상 함수
    };
    • 파생 클래스에서의 순수 가상 함수 구현 예시
    class PlayerScoreHandler : public IPlayerScoreListener
    {
    public:
        void OnPlayerScoreChanged(int32 NewPlayerScore) override
        {
            UE_LOG(LogTemp, Log, TEXT("Player score changed: %d"), NewPlayerScore);
        }
    };

     

     

    왜 순수 가상 함수가 필요한가?

    • 다형성(Polymorphism) 지원
      • 순수 가상 함수는 파생 클래스에서 각기 다른 방식으로 구현되도록 강제하여 다형성을 제공
      • 예) 여러 종류의 객체가 같은 인터페이스를 구현하지만, 각각 고유한 동작을 할 수 있음
    IPlayerScoreListener* Listener = new PlayerScoreHandler();
    Listener->OnPlayerScoreChanged(100);
    
    IPlayerScoreListener* Listener2 = new PlayerScoreHandler2();
    Listener2->OnPlayerScoreChanged(100);
    • 인터페이스 역할
      • 순수 가상 함수는 클래스가 인터페이스 역할을 수행하게 함
      • 인터페이스는 특정 기능을 표준화하고, 이를 따르는 모든 클래스에서 동일한 형태로 구현하도록 강제
    • 강제 구현
      • 파생 클래스에서 반드시 구현해야 하는 함수임을 명확히 하여 실수로 빼먹는 것을 방지
Designed by Tistory.