제미니 답변 :

 

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++ 지식이 있다면 큰 어려움 없이 적응할 수 있습니다.

+ Recent posts