I know uclass will create cdo, but why have to create it? Just for get object default value?
The CDO serves as a template for new objects. Objects that are created at runtime are copied from the CDO. See the documentation for a little more info.
Neat uses for the CDO include resetting modified properties to their default values.
The CDO is created automatically for every class (as long as it inherits from UObject I believe)
They should always be valid as long as the engine is running and are super useful for things like grabbing the default value of some variable for a certain class. That’s what I use them for most often.