언리얼 엔진 C++ 코드를 보다 보면 UObject 계열 객체를 raw pointer로 참조하는 코드를 볼 수 있다.하지만 UE5에서는 UObject* 같은 raw pointer 대신 TObjectPtr 사용을 권장하는 경우가 많다.처음에는 UPROPERTY만 붙이면 GC 추적 대상이 되는데, 왜 굳이 TObjectPtr을 사용하는지 궁금했다.그래서 관련 내용을 찾아보니 TObjectPtr 외에도TWeakObjectPtr, TSoftObjectPtr, TStrongObjectPtr 같은 포인터들이 있었다.또 일반 C++에서 사용하는 shared_ptr, unique_ptr과 비슷해 보이는TSharedPtr, TUniquePtr 같은 타입도 따로 존재했다.그래서 이번 글에서는 언리얼 엔진에서 사용하는 포인..