UObject & reflection
Every gameplay class you write in Unreal — AActor, UActorComponent, your own UMyGameSubsystem
Garbage collection
UObjects are not managed with new/delete or reference counting — they're managed by a tracing
Strings & text
Unreal doesn't use std::string. It has three distinct string types — FString, FName, and
Containers
Unreal ships its own container library instead of using std::unordered_map, and
Smart pointers & ownership
Unreal has two entirely separate ownership systems, and they must never be mixed. UObjects are
Delegates & events
Delegates are Unreal's answer to "call this function later, without the caller knowing what type owns
Interfaces
Unreal interfaces look unlike anything in standard C++ because reflection needs a UObject-derived
Subsystems
Before subsystems existed, "I need one instance of this system, reachable from anywhere" meant a
Logging & assertions
Unreal doesn't use C++ exceptions — throwing is disabled across the engine, and Epic's own guidance is
Coding standard & naming
Unreal C++ has a house style, and it's more than cosmetic: the type-prefix convention (U, A, F,
Unreal C++ vs standard C++
Unreal C++ compiles with the same compiler you'd use for any other C++ project, but a meaningful slice