-
[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);
- 인터페이스 역할
- 순수 가상 함수는 클래스가 인터페이스 역할을 수행하게 함
- 인터페이스는 특정 기능을 표준화하고, 이를 따르는 모든 클래스에서 동일한 형태로 구현하도록 강제
- 강제 구현
- 파생 클래스에서 반드시 구현해야 하는 함수임을 명확히 하여 실수로 빼먹는 것을 방지
'UE5' 카테고리의 다른 글
[UE5] 네트워크 멀티플레이어 (0) 2024.12.10 [UE5] 추상클래스와 인터페이스 (0) 2024.12.06 [UE5] 인터페이스의 활용 (0) 2024.12.05 [UE5] 단일 캐스팅 델리게이트를 이용한 다중 동작 이벤트 처리 (2) 2024.12.03 [UE5] CoreMinimal.h란? (1) 2024.12.03