Questions about CDO in the documentation

If that array is initialized in constructor then yes, your CDO and each instance of that object will populate 1GB of memory. If that object is meant to be a singleton and that array is crucial, consider using the CDO as a singleton. You can get the CDO in C++ via GetDefault<USomeObject>() for a const version or GetMutableDefault<USomeObject>() for non-const version. You can also pass/return the CDO to blueprints just like a normal object.
If you want to keep working with instances, but avoid populating CDO object, you can add a check as such :

if (!HasAnyFlags(RF_ClassDefaultObject))
{
    // do stuff
}

Alternatively, create your own initialization function and call it whenever you create a new object instance.

Regarding second question I’m not sure what they mean. My guess is that in C++ you normally have the possibility to delete constructors (eg: USomeObject() = delete;) and that sentence in UE docs just warns you not to do that.

2 Likes