728x90
1. 개요
오늘은 RTTI vs Reflection 에대해서 알아보도록 하겠습니다.
2. RTTI
RTTI 는 Run Time Type Information 의 약자로 C++에 핵심 기술입니다.
보통 virtual 함수를 통해 실행시간에 클래스의 정보를 가져오는 역할을 합니다.
실행시간에 정보를 가져온다는 점이 특징이며, RTTI는 객체의 정보 및 함수 오버라이딩을 할수있어 다양성 성격을 띄우지만 변수를 가져오지 못합니다.
https://chogyujin-study.tistory.com/25
3. Reflection
리플렉션 기능은 컴파일 시간에 객체들의 정보들을 수집하여 실행시간에 타입 및 정보등을 얻을수 있는 시스템입니다.
RTTI보다 상위 호완이며 C++에서는 사용을 할수가 없습니다.
대신 C#, JAVA에서는 사용할수 있습니다.
그래서인지 언리얼엔진에서는 이 리플렉션 기능을 추가했는데 프로퍼티 시스템이라고 불립니다.
UPROPERTY나 UCLASS, UFUNCTION 을 통해 맴버 변수, 맴버 함수, 객체 정보등을 얻을수 있습니다.
https://chogyujin-study.tistory.com/71
4. 뭔 차이냐 ?
그래서 결국 RTTI 랑 Reflection이랑 차이가 무엇이냐면
- 정보를 얻는 시점이 컴파일시간때냐 아니면 실행시간때이냐(정확히 말하면 RTTI 즉 virtual Function으로 얻는것은 일단 함수 자체는 코드에 저장된다. 하지만 가상함수 포인터는 생성자 실행때 가르키게된다.)
- 맴버 변수도 정보를 얻을수 있냐 없냐
이러한 차이가 있습니다.
아래의 표를 보면서 확인해보겠습니다.
구분/기술 | RTTI | Reflection |
언제 정보를 얻는가? | 실행 시간때 정보를 얻음(가상 함수 포인터) | 컴파일 때(언리얼은 프로퍼티 시스템이라고 부름) |
맴버 변수를 얻을수있냐? | 불가능(맴버 함수랑 객체 정보만 얻을수 있음) | 가능(맴버 변수까지 실시간에 알수있음) |
'개발자 면접 공부 > 언리얼 엔진' 카테고리의 다른 글
언리얼 엔진 액터의 생명주기(에디터에서 플레이) (0) | 2024.03.20 |
---|---|
언리얼 엔진 액터의 생명주기(디스크 로드) (0) | 2024.03.19 |
FSM, HFSM, BT 의 구조 (0) | 2023.02.28 |
언리얼 엔진의 가비지 컬렉션 (0) | 2023.02.22 |
언리얼 엔진의 리플렉션 (프로퍼티) (0) | 2023.02.02 |