UObject
The root of Unreal Engine's class hierarchy, bolting reflection, garbage collection and serialisation onto C++ that never had them.
C++ has neither reflection nor garbage collection, so Unreal builds its own. Classes are tagged with macros like UCLASS, UPROPERTY and UFUNCTION, and the Unreal Header Tool reads the source before the compiler does and generates metadata. That is what lets properties show up in the editor, save to disk, replicate over the network and be called from Blueprints.
The collector is mark-and-sweep and only follows pointers it knows about. A raw pointer to a UObject without UPROPERTY is invisible to it, so the object can be collected while the pointer is still in use — one of the most common crashes in Unreal code. AActor, anything you can place in a level, inherits from here.