제미니 답변 :
C++ 표준과 언리얼 엔진의 C++은 차이가 꽤 있습니다. 언리얼 엔진은 표준 C++ 문법을 기반으로 하지만, 게임 개발에 최적화하기 위해 자체적인 확장 기능과 매크로를 많이 사용합니다.
주요 차이점
1. Reflection (리플렉션)
- 표준 C++: 기본적으로 리플렉션 기능을 지원하지 않습니다. 런타임에 객체의 타입, 멤버 변수, 함수 정보 등을 조회하는 것이 불가능하거나 매우 복잡한 방식으로 구현해야 합니다.
- 언리얼 엔진 C++: 언리얼 엔진은 UPROPERTY, UFUNCTION, UCLASS 같은 전용 매크로를 사용해 리플렉션 시스템을 구현했습니다. 이를 통해 에디터에서 변수를 조작하거나, 블루프린트에서 C++ 함수를 호출하는 등 다양한 기능이 가능해집니다.
2. 메모리 관리
- 표준 C++: new와 delete를 사용하거나 스마트 포인터(std::shared_ptr, std::unique_ptr 등)를 이용해 메모리를 직접 관리해야 합니다.
- 언리얼 엔진 C++: 언리얼 엔진은 자체적인 가비지 컬렉터(Garbage Collector)와 스마트 포인터 시스템(TSharedPtr, TWeakObjectPtr 등)을 제공합니다. 특히 UObject 계열의 클래스는 가비지 컬렉터의 관리하에 있어 메모리 누수 위험이 적습니다.
3. 컨테이너 (Container)
- 표준 C++: std::vector, std::map, std::string과 같은 표준 라이브러리 컨테이너를 사용합니다.
- 언리얼 엔진 C++: 성능과 언리얼 엔진의 자체 시스템과의 호환성을 위해 TArray, TMap, FString 같은 전용 컨테이너 클래스를 사용합니다. 이 컨테이너들은 언리얼 엔진의 메모리 할당 시스템과 통합되어 더 효율적으로 동작합니다.
4. 매크로 사용
- 표준 C++: 매크로 사용을 최소화하는 경향이 있으며, 템플릿이나 인라인 함수를 선호합니다.
- 언리얼 엔진 C++: 위에서 언급된 리플렉션 매크로 외에도, GENERATED_BODY(), FORCEINLINE 등 엔진의 특정 시스템과 연동하기 위한 매크로가 굉장히 많이 사용됩니다.
이러한 차이점 때문에 표준 C++만 알고 있는 개발자가 언리얼 엔진 C++에 익숙해지려면 약간의 학습 기간이 필요합니다. 하지만 기본적인 문법과 개념은 동일하므로, C++ 지식이 있다면 큰 어려움 없이 적응할 수 있습니다.
'개발 > 언리얼 Unreal' 카테고리의 다른 글
| UE5 / State Tree 메모 (1) | 2025.09.17 |
|---|---|
| UE5 / Property Access, Blueprint Thread Safe Update Animation (0) | 2025.09.04 |
| UE5 / 애니메이션 블루프린트에서는 직접적으로 로컬 컨트롤러인지(Local Player인지)를 바로 판정할 수 없습니다. (3) | 2025.08.02 |
| UE5 / 멀티플레이 스팀 로비, Multiplay Steam Lobby (3) | 2025.07.12 |
| UE5 / GameState, GameMode (0) | 2025.07.11 |
