CreateComponents vs GetComponents

The reason for CreateDefaultSubObject is to instantiate the component during the objects construction phase. It’s just an extra step to creating the component in code, without it components just a definition in the header file.

Unity is different in this aspect that it’s c# which doesn’t have the distinction of header files and cpp files.

In unreal you can use

GetComponentByClass or the plural form GetComponentsByClass