Generally your would make something a UObject if you want to take advantage of Unreal’s Object handling system such as Garbage collection and reflection/replication etc. You are completely free to use standard c++ objects as well. But be aware that you’ll then be responsible for the object lifetime and memory management. In cmartels example above the object is contained in a struct that is a permanent member of the class so it’s lifetime is tied up to the scope of the GameMode so when the gamemode goes out of scope (ie gets cleaned up by the engine) it will also get cleaned up as well.
If you wanted dynamically created objects, then you could store a pointer to a c++ object and then call bog standard ‘new’ and delete yourself in the destructor but it’s up to you. And like cmartel said above, in 4.6 c++ is a little bit different. From now, all subobjects are stored as normal c++ pointers ( i would prefer unique or shared pointers, for memory safety but I guess the unreal object system has that taken care of under the hood).