【虚幻4】浅析UE4中的C++

版权声明:本文为CSDN博主「趁着头发多我想做游戏」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_37658157/article/details/125296949

摘要:虚幻4中的C++是“魔改”过的,到处可见的宏编程会增加初学者的理解成本,本文主要是记录一下自己的学习过程以及遇到的难题。

C++的基础知识点

1. 宏定义

参考链接:C++宏定义详解

可以理解为简单的字符串替换,如 #include <xxx.h> 实际上是把头文件 xxx.h的内容展开,然后替换到声明处而已。注意看下面的例子:

// xxx.h
int a = 1;
int b = 2;

以下两段代码是等效的:

int func()
{
    
    
    #include "xxx.h"
    return a + b;
}
int func()
{
    
    
    int a = 1;
	int b = 2;
    return a + b;
}

注意宏替换是简单的字符串替换,不会进行任何运算。比如想用宏定义一个求平方数的函数,以下的宏定义就是错误的:

#define area(x) x*x  

void main()
{
    
    
    int y = area(2+2);//本该输出16,实则输出8
    printf("%d",y);
}

上述程序本该输出16,实则输出8,因为宏定义实际上会替换成下面的代码:

void main()
{
    
    
    int y = 2+2*2+2;
    printf("%d",y);
}

正确的宏定义如下所示:

#define area(x) ((x)*(x)) 

注意最外层的括号不能丢掉,否则在计算除法时又会出错了:

#define area(x) (x)*(x)  

void main()
{
    
    
    int y = area(2+2)/area(2+2); //本该输出1,实则输出16
    //实际上替换成了 int y = (2+2)*(2+2)/(2+2)*(2+2);
    printf("%d",y);
}

2. 指针(TODO)


UE4中的C++(TODO)

  1. UE的特殊宏
    由于C++没有反射和垃圾回收机制,UE封装了一套以宏为基础的反射与垃圾回收架构。

UPROPERTY:

UFUNCTION:

UCLASS:

USTRUCT :

GENERATED_BODY:


猜你喜欢

转载自blog.csdn.net/weixin_37658157/article/details/125296949