When coding with C++, you can have your own code that compiles and runs as native C++ code, with appropriate calls to
delete to create and destroy your custom objects. Native C++ code is perfectly acceptable in your UE4 project as long as your
delete calls are appropriately paired so that no leaks are present in your C++ code.
You can, however, also declare custom C++ classes, which behave like UE4 classes, by declaring your custom C++ objects as
UCLASS use UE4's Smart Pointers and memory management routines for allocation and deallocation according to Smart Pointer rules, can be loaded and read by the UE4 Editor, and can optionally be accessed from Blueprints.
Note that when you ...