Fork me on GitHub

UE4 GamePlaye 框架 GENERATED_BODY() 与 GENERATED_UCLASS_BODY()

GENERATED_BODY() 与 GENERATED_UCLASS_BODY() 是GamePlay框架 GameMode 类下的宏

这两个宏都封装了构造函数相关的内容

VS2017后都直接使用 GENERATED_BODY() 

之前的版本都是使用 GENERATED_UCLASS_BODY() 

首先为什么有两个宏定义的区别,主要是考虑到,继承父类之后,在于是否需要对父类的东西有所改动,构造函数的初始化亦是如此。

 

区别:

GENERATED_BODY():

如果定义的是GENERATED_BODY(),那么意味着我不需要使用父类的构造函数,也就是说,我不能直接使用父类的声明,但是,我需要去实现的时候,我就必须自己去声明,否则就会报错,然后就可以在CPP中实现自己声明的这个构造函数。

总结:属于新版本的宏,不生成构造函数,如果需要自定义,需要自己声明并定义,之后成员是private。

 

GENERATED_UCLASS_BODY():

如果定义的是GENERATED_UCLASS_BODY(),那么意味着我使用父类的构造函数,也就是说,我不需要为自己声明构造函数,直接去实现父类声明那个构造函数,那么在CPP文件中去实现,而不需要在H里面去声明。

总结:属于之前版本的宏,自动生成带有指定参数的构造函数,不用用户再头文件中生明构造函数,需要在CPP中实现,否则报错,之后成员是public。

posted @ 2021-07-01 21:11  索智源  阅读(1345)  评论(0编辑  收藏  举报