16周 5.1代理 补充 当一个已绑定通知的单播代理类型绑定其他通知时,会和之前的通知解绑,转而绑定其他通知
代理分类: 代理(常规代理)和动态代理 1.代理(常规代理) 特点:在C++中构建只能用于C++的代理 分类:单播和多播 单播:一对一的关系,一个对象只能代理一个通知;可以代理带有返回值的通知(函数) 多播:一对多的关系,一个对象可以代理多个通知 理带有返回值的通知(函数)
2.动态代理 特点:具备反射关系,可以反射给虚幻引擎使用(也就是可以被序列化) 分类: 2.1动态单播:一对一的关系,一个对象只能代理一个通知;不能在蓝图中使用;可以代理带有返回值的通知(函数) 2.2动态多播:一对多的关系,一个对象可以代理多个通知;不能代理带有返回值的通知(函数);在瑨托蓝图中使用
单播代理宏 DECLARE_DELEGATE(DelegateTestFirstName) 代理的通知必须是无参无返回值 DECLARE_DELEGATE_TwoParams(DelegateTestSecondName,int32,FString) 代理的通知必须是无返回值,参数为int32和FString
1.创建代理类型(一般在头文件类上方创建) DECLARE_DELEGATE(DelegateTestFirstName) 代理类型为DelegateTestFirstName 2.根据代理类型实例化代理对象(一般在头文件类内创建) DelegateTestFirstTime DTFN;
3.绑定代理通知(一般在BeginPlay方法中实现) DTFN.BindUObject(this,&ASnakeGameModeBase::Test1); 4.找到事件,执行代理通知(执行回调函数) if(DTFN.IsBound()){ DTFN.Execute(); }
虚幻4 Hit.GetActor()->IsValid() 虚幻5 IsValid(Hit.GetActor())
16 3.3 UActorComponent不存在3D变换关系 USceneComponent存在3D变换关系
接口
decltype 类型推断与引用
C++11 范围for循环
测试逻辑
十四周 3.6
对象型数组 Pawn pinstance{属性} 存放在栈区,容易被自动释放 指针数组 Pawn* pinstancePtr = new Pawn{属性} ppawn 存放在堆区,可手动释放
printf不能输出string类型 1.const char* Name2 = "小红" printf("%s",Name2); 2.string Name1="小红"; printf("%s",Name1.c_str());
%m.nf m代表占多少位 n代表保留几位小数,四舍五入 m向右对齐,空格在左边补 -m向左对齐,空格在右边补
%m.nd n代表显示字符的个数 %5.3d,1 就是 001 %m.ns n同样代表显示字符的个数
c++ 操作符 new delete c 函数 malloc(申请的字节数) free(被释放空间地址)
new1.确定申请空间类型2.直接给出初始值3.返回值是申请空间类型的地址 malloc()返回万能指针void* void *Ptr2 = malloc(sizeof(float)); float* Ptr3 = (float*)Ptr2 free(Ptr2);
常量指针 const int* Ptr1 = &Number; 可以修改指针的指向,允许解引用但不允许修改指向空间中的数据 指针常量 int* const Ptr2 = &Number; 不可以修改指针的指向,允许解引用且允许修改指向空间中的数据
常量指针常量 const int* const Ptr3 不可修改指针的指向,允许解引用但不允许修改指向的空间中的数据
对象型指针 User* uPtr = &uInstance; 指针访问属性用-> 例如uPtr->Name 对象访问属性用. 例如uInstance.Name
new User直接在堆区中申请地址,返回地址,需手动delete销毁地址并回收指针 User uInstance在栈区中定义变量,即用即销
无效指针1 空指针 nullptr/NULL 通常用nullptr 两者底层都是0 if(Ptr)当指针不为空指针时为真
无效指针2 野指针 1.未经初始化 2.给出无效赋值 3.释放空间后产生碎片、指针记录碎片的地址(没有合理回收地址 Ptr = nullptr)
&后面跟内存空间名 代表取地址符 &Number 代表Number的地址
int* Ptr = nullptr int*代表可以指向int类型内存空间的指针变量 Ptr变量存放的是地址 nullptr代表空指针 表示不指向任何空间地址 Ptr = &Number 将地址赋值给Ptr 使Ptr指针指向Number
*Ptr中的*表示解引用符 *通过Ptr中的地址解出Ptr指向的内存空间,获取到内存空间的数据 Ptr指针指向Number,*Ptr则通过地址找到了Number,从而获取到了Number的数据,或是对Number进行赋值修改,代码中对*Ptr进行操作等同于对Number进行操作
typedef 别名 typedef 原始数据类型名 新类型名 例如typedef unsigned int uint
别名另一种方法 using uint = unsigned int
作用域
结构体实例化
结构体初始化
结构体命名 类似于结构体的父类 可用于归到一个类中
#pragma once
结构体 头文件中Struct 结构体名{属性} 在c++中引用头文件 #include<iostream> <>引用函数库中的头函数 #include"User.h" ""引用自己的头文件
浮点随机数 rand() / double(RAND_MAX)
冒泡排序
是否退出
Sleep() 头文件 #include<Windows.h>
F12 声明调定义 定义调声明
随机数
值传递 地址传递
函数重载
16周 5.1代理 补充 当一个已绑定通知的单播代理类型绑定其他通知时,会和之前的通知解绑,转而绑定其他通知
3星期前代理分类: 代理(常规代理)和动态代理 1.代理(常规代理) 特点:在C++中构建只能用于C++的代理 分类:单播和多播 单播:一对一的关系,一个对象只能代理一个通知;可以代理带有返回值的通知(函数) 多播:一对多的关系,一个对象可以代理多个通知 理带有返回值的通知(函数)
3星期前2.动态代理 特点:具备反射关系,可以反射给虚幻引擎使用(也就是可以被序列化) 分类: 2.1动态单播:一对一的关系,一个对象只能代理一个通知;不能在蓝图中使用;可以代理带有返回值的通知(函数) 2.2动态多播:一对多的关系,一个对象可以代理多个通知;不能代理带有返回值的通知(函数);在瑨托蓝图中使用
3星期前单播代理宏 DECLARE_DELEGATE(DelegateTestFirstName) 代理的通知必须是无参无返回值 DECLARE_DELEGATE_TwoParams(DelegateTestSecondName,int32,FString) 代理的通知必须是无返回值,参数为int32和FString
3星期前1.创建代理类型(一般在头文件类上方创建) DECLARE_DELEGATE(DelegateTestFirstName) 代理类型为DelegateTestFirstName 2.根据代理类型实例化代理对象(一般在头文件类内创建) DelegateTestFirstTime DTFN;
3星期前3.绑定代理通知(一般在BeginPlay方法中实现) DTFN.BindUObject(this,&ASnakeGameModeBase::Test1); 4.找到事件,执行代理通知(执行回调函数) if(DTFN.IsBound()){ DTFN.Execute(); }
3星期前虚幻4 Hit.GetActor()->IsValid() 虚幻5 IsValid(Hit.GetActor())
3星期前16 3.3 UActorComponent不存在3D变换关系 USceneComponent存在3D变换关系
4星期前接口
1个月前decltype 类型推断与引用
2个月前C++11 范围for循环
2个月前测试逻辑
2个月前十四周 3.6
2个月前对象型数组 Pawn pinstance{属性} 存放在栈区,容易被自动释放 指针数组 Pawn* pinstancePtr = new Pawn{属性} ppawn 存放在堆区,可手动释放
11个月前printf不能输出string类型 1.const char* Name2 = "小红" printf("%s",Name2); 2.string Name1="小红"; printf("%s",Name1.c_str());
11个月前%m.nf m代表占多少位 n代表保留几位小数,四舍五入 m向右对齐,空格在左边补 -m向左对齐,空格在右边补
11个月前%m.nd n代表显示字符的个数 %5.3d,1 就是 001 %m.ns n同样代表显示字符的个数
11个月前c++ 操作符 new delete c 函数 malloc(申请的字节数) free(被释放空间地址)
11个月前new1.确定申请空间类型2.直接给出初始值3.返回值是申请空间类型的地址 malloc()返回万能指针void* void *Ptr2 = malloc(sizeof(float)); float* Ptr3 = (float*)Ptr2 free(Ptr2);
11个月前常量指针 const int* Ptr1 = &Number; 可以修改指针的指向,允许解引用但不允许修改指向空间中的数据 指针常量 int* const Ptr2 = &Number; 不可以修改指针的指向,允许解引用且允许修改指向空间中的数据
11个月前常量指针常量 const int* const Ptr3 不可修改指针的指向,允许解引用但不允许修改指向的空间中的数据
11个月前对象型指针 User* uPtr = &uInstance; 指针访问属性用-> 例如uPtr->Name 对象访问属性用. 例如uInstance.Name
12个月前new User直接在堆区中申请地址,返回地址,需手动delete销毁地址并回收指针 User uInstance在栈区中定义变量,即用即销
12个月前无效指针1 空指针 nullptr/NULL 通常用nullptr 两者底层都是0 if(Ptr)当指针不为空指针时为真
12个月前无效指针2 野指针 1.未经初始化 2.给出无效赋值 3.释放空间后产生碎片、指针记录碎片的地址(没有合理回收地址 Ptr = nullptr)
12个月前&后面跟内存空间名 代表取地址符 &Number 代表Number的地址
12个月前int* Ptr = nullptr int*代表可以指向int类型内存空间的指针变量 Ptr变量存放的是地址 nullptr代表空指针 表示不指向任何空间地址 Ptr = &Number 将地址赋值给Ptr 使Ptr指针指向Number
12个月前*Ptr中的*表示解引用符 *通过Ptr中的地址解出Ptr指向的内存空间,获取到内存空间的数据 Ptr指针指向Number,*Ptr则通过地址找到了Number,从而获取到了Number的数据,或是对Number进行赋值修改,代码中对*Ptr进行操作等同于对Number进行操作
12个月前typedef 别名 typedef 原始数据类型名 新类型名 例如typedef unsigned int uint
12个月前别名另一种方法 using uint = unsigned int
12个月前作用域
12个月前结构体实例化
12个月前结构体初始化
12个月前结构体命名 类似于结构体的父类 可用于归到一个类中
12个月前#pragma once
12个月前结构体 头文件中Struct 结构体名{属性} 在c++中引用头文件 #include<iostream> <>引用函数库中的头函数 #include"User.h" ""引用自己的头文件
1年前浮点随机数 rand() / double(RAND_MAX)
1年前冒泡排序
1年前是否退出
1年前Sleep() 头文件 #include<Windows.h>
1年前F12 声明调定义 定义调声明
1年前随机数
1年前值传递 地址传递
1年前函数重载
1年前