C++
文章平均质量分 80
游戏鸟
这个作者很懒,什么都没留下…
展开
-
UE4通过类名符串和函数名字符串调用函数
UPROPERTY() FACTION_DATA CurActionData; UPROPERTY(EditAnywhere, BlueprintReadWrite, DisplayName = "播放完成回调类(不要A,U前缀如Actor非AActor)") FString ClassName; UPROPERTY(EditAnywhere, BlueprintReadWrite, DisplayName = "播放完成回调函数") FName CallBackUFunction;F...原创 2020-06-11 16:34:59 · 1730 阅读 · 0 评论 -
UE4纯C++黑板Blackboard键添加(备忘
FindObject<UEnum>(ANY_PACKAGE, *FString("EEnemyAIState"), true)原创 2020-05-29 14:39:10 · 1340 阅读 · 0 评论 -
关于指向派生类的基类指针或引用
基类指针或引用只能用于调用基类方法,不能使用基类指针或引用指向派生类方法。原创 2017-03-01 18:56:19 · 689 阅读 · 0 评论 -
函数参数按引用传递和按值传递对动态联编的影响
不适当的代码将阻止动态联编.例如,下面两个函数:基类:Brass,派生类:BrassPlusViewAcct()为基类和派生类的虚函数void show(const Brass & rba){rba.ViewAcct();}void inadequate(Brass ba){ba.ViewAcct();}第一个函数按引用传递对象,第二个按值传递对象。原创 2017-03-08 20:18:12 · 443 阅读 · 0 评论 -
模板类中的表达式(非类型)参数
templateclass ArrayTP{public:ArrayTP();explicit ArrayTP(constT&v);virtual T& operator[](int i);virtual T&operator[](int i)const;private:T ar[n];};关键字class(或中等价的关键字typename原创 2017-03-16 20:40:54 · 675 阅读 · 0 评论 -
模板类和友元
懒得抄了,直接截图,后面对模板类友元函数是单个类具体化的友元,还是模板类所有具体化的友元进行自己理解的总结。总结:1.模板类的非模版友元函数友元函数与 T无关时,友元和类的实例化是一对多的关系。即这个友元函数是所有类实例化的友元,可以访问所有类里面的成员对象。友元函数与 T有关时,比如包含T的参数等,指定友元的具体化只是对应具体化类的友元,即一对一的关系,指定具体化友元指定访问原创 2017-03-22 19:02:04 · 527 阅读 · 0 评论 -
我所理解的设计模式(C++实现)——适配器模式(Adapter Pattern)
原博链接:http://blog.csdn.net/lcl_data/article/details/8780140解决的问题:适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本接口不匹配而无法在一起工作的两个类能够在一起工作。比如说我的hp笔记本,美国产品,人家美国的电压是110V的,而我们中国的电压是220V,要在中国能使用,必须找个变压器转一下电压才可以。这个变压转载 2017-04-22 08:45:18 · 373 阅读 · 0 评论 -
c++11模板别名using=
对于冗长或复杂的标识符,如果能够创建其别名将很方便。以前c++为此提供了typedef:typedef std::vector::itrrator itType;C++11提供了另一种创建别名的语法 using=using itType=std::vector::iterator itType;差别在于新语法也可以用于模板部分具体化,但是typedef不能:template原创 2017-05-23 20:35:31 · 776 阅读 · 0 评论 -
为什么c++ 中类内初始值不能使用圆括号初始化?
偶然在记得在知乎上看到过回答,后来忘了,翻了好久浏览记录翻出来了,希望对别人加深理解有所帮助源自知乎:https://www.zhihu.com/question/37019538为什么c++ 中类内初始值不能使用圆括号初始化?为什么class A{public:int a(100);};这样不行呢 用花括号或者=就可以呢 这样设计的目的是什么原创 2017-05-26 19:36:10 · 6541 阅读 · 0 评论 -
C++静态库与动态库区别
C++静态库与动态库这次分享的宗旨是——让大家学会创建与使用静态库、动态库,知道静态库与动态库的区别,知道使用的时候如何选择。这里不深入介绍静态库、动态库的底层格式,内存布局等,有兴趣的同学,推荐一本书《程序员的自我修养——链接、装载与库》。什么是库库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存转载 2017-05-19 15:48:59 · 486 阅读 · 0 评论 -
(C++11)Lambda表达式(匿名函数)和为什么使用Lanbda表达式
名称Lanbda来自landba caculus(λ演算)--一种定义和应用函数的数学系统。这个系统能让您使用匿名函数--即无需给函数命名。在C++11中,对于接受函数指针或函数符的的函数,可使用匿名函数定义(lambda)作为其参数。与前述函数f3对应的lambda如下:bool f3(int x){return x%3==0;}(计算是否被3整除)对应lambda表达式:[](in原创 2017-06-01 18:53:49 · 1840 阅读 · 0 评论 -
C++“准”标准库Boost学习指南-variant的使用
Variant库包含一个不同于union的泛型类,用于在存储和操作来自于不同类型的对象。这个库的一个特点是支持类型安全的访问,减少了不同数据类型的类型转换代码的共同问题。Variant 库如何改进你的程序?对用户指定的多种类型的进行类型安全的存储和取回在标准库容器中存储不同类型的方法变量访问的编译期检查高效的、基于栈的变量存储Variant 库关注的是对一组限定类型转载 2017-10-11 14:56:51 · 1259 阅读 · 0 评论 -
使用ifstream和getline读取文件内容
假设有一个叫 data.txt 的文件, 它包含以下内容: Fry: One Jillion dollars.[Everyone gasps.]Auctioneer: Sir, that's not a number.数据读取, 测试 。以下就是基于 data.txt 的数据读取操作:#include iostream>#include fs转载 2017-11-15 18:54:09 · 1208 阅读 · 0 评论 -
泛化之美--C++11可变模版参数的妙用
原博地址:http://www.cnblogs.com/qicosmos/p/4325949.html1概述C++11的新特性--可变模版参数(variadic templates)是C++11新增的最强大的特性之一,它对参数进行了高度泛化,它能表示0到任意个数、任意类型的参数。相比C++98/03,类模版和函数模版中只能含固定数量的模版参数,可变模版参数无疑是一个巨大的改进。然而由于可变模版参数...转载 2018-02-28 16:47:09 · 314 阅读 · 0 评论 -
C++调用dll文件的两种方法
DLL中导出函数的声明有两种方式:一种是在函数声明中加上_declspec(dllexport)关键字,另一种方式就是采用模块定义文件声明。.def 文件为连接器提供了有关被链结程序的导出、属性及其他方面的信息。在连接阶段,可以使用/DEF(指定模块定义文件)连接器选项调用.def 文件。.def 文件必须至少包含下列模块定义语句: 1】文件中的第一个语句必须是LIBRARY 语句。此语句将 .d...转载 2018-06-22 10:50:52 · 48337 阅读 · 4 评论 -
浅谈C++基类的析构函数为虚函数
本文重点:应该为多态基类声明虚析构器。一旦一个类包含虚函数,它就应该包含一个虚析构器。如果一个类不用作基类或者不需具有多态性,便不应该为它声明虚析构器。1、原因: 在实现多态时, 当用基类指针操作派生类, 在析构时候防止只析构基类而不析构派生类。2、例子: (1)、 #include using namespace st转载 2017-03-01 20:34:40 · 767 阅读 · 0 评论 -
关于初始化参数列表使用注意
1.初始化列表的格式只能呢个用于构造函数2.非晶态const数据成员必须用参数化列表进行初始化3.引用格式数据成员初始化必须用参数化列表进行初始化原创 2017-02-28 18:20:42 · 1289 阅读 · 0 评论 -
左值和右值
左值参数是可被引用的数据对象,例如变量,数组元素,结构成员,引用和解除引用的指针都是左值。非左值包括字面常量(用引号括起来的字符串除外,它们由地址表示)和包含多项的表达式。原创 2016-11-23 20:08:46 · 345 阅读 · 0 评论 -
UE4 C++的 GENERATED_BODY()和GENERATED_UCLASS_BODY()的区别
GENERATED_BODY标识的类的成员默认是private的,GENERATED_BODY标识的类需要声明无参数的构造函数,GENERATED_UCLASS_BODY可以不声明构造函数(如果要实现构造函数需要加上const FObjectInitializer& ObjectInitializer参数)...原创 2016-09-12 11:14:27 · 10243 阅读 · 2 评论 -
UE4反射机制UCLASS() USTRUCT() GENERATED_BODY() UPROPERTY() UFUNCTION()
建议看看官方完整元API链接:https://docs.unrealengine.com/latest/CHN/Programming/Introduction/index.html游戏性类使用特殊的标记。因此在开始了解它们之前,我们有必要了解虚幻属性系统的一些基础知识。UE4 使用其自身的反射实现,可启用动态功能,如垃圾回收、序列化、网络复制和蓝图/C++ 通信。这些功能为选择加入,意味转载 2016-09-12 17:20:54 · 9938 阅读 · 0 评论 -
常量指针与指针常量的区别
原文链接:http://www.cnblogs.com/witty/archive/2012/04/06/2435311.html三个名词虽然非常绕嘴,不过说的非常准确。用中国话的语义分析就可以很方便地把三个概念区分开。一) 常量指针。常量是形容词,指针是名词,以指针为中心的一个偏正结构短语。这样看,常量指针本质是指针,常量修饰它,表示这个指针乃是一个指向常量的指针(变转载 2016-09-18 16:43:48 · 522 阅读 · 0 评论 -
ue4 创建c++工程失败解决方案
最近开始学习UE4,创建c++工程的时候,发现在生产代码的时候,总会报错,折腾了好久,搜索很多,在ue论坛一个帖子中找到方法才解决。我的环境是win10 ,UE4的引擎版本是4.11.2先卸载以前安装的vs2015(下面外国友人提供了如何完整卸载vs2015的方法)不用要vs2015 update3的版本,下载vs2015版本就行了安装vs2015的时候,进转载 2016-09-26 10:50:28 · 10127 阅读 · 1 评论 -
C/C++使用strcpy报错解决方案
strcpy函数的拷贝不能保证拷贝的安全性,有溢出风险。解决方案1使用strcpy_s代替,但此函数有三个参数,中间的参数需要制定拷贝长度。strcpy_s(p,80,temp);解决方案2使用预编译宏去掉警告项目--属性--配置属性--C/C++--命令行添加:D/ _CRT_SECURE_NO_WARNINGS 解决方案3main前面加上原创 2016-11-05 12:13:56 · 10806 阅读 · 3 评论 -
vector中insert()的用法详解
iterator insert( iterator loc, const TYPE &val ); void insert( iterator loc, size_type num, const TYPE &val ); void insert( iterator loc, input_iterator start, input_iterator end ); insert() 函转载 2016-11-08 19:09:40 · 1524 阅读 · 0 评论 -
关于联合体union的详细解释
1.概述联合体union的定义方式与结构体一样,但是二者有根本区别。在结构中各成员有各自的内存空间,一个结构变量的总长度是各成员长度之和。而在“联合”中,各成员共享一段内存空间,一个联合变量的长度等于各成员中最长的长度。2.联合体长度在The C Programming Language里面讲述union内存分配的原话是1)联合体就是一个结构转载 2016-11-09 14:51:09 · 2167 阅读 · 0 评论 -
visual c++中stdafx.h的作用以及原理
摘要: visual c++ 中的stdafx.h头文件的作用stdafx.hVC工程里面经常见到stdafx.h这个头文件,以前也没有特别注意,但是这个文件用不好经常会出错,所以就GOOGLE了一下,总算是弄清楚了。。。stdafx的英文全称为:Standard Application Framework Extensions(标准应用程序框架的扩展)。所谓头文件预编译,转载 2016-11-12 15:53:51 · 613 阅读 · 0 评论 -
cin,cin.get()的区别
相同:cin和cin.get()都是在回车后才将输入从缓冲发给程序。不同:cin将忽略输入中的空格和换行符,而cin.get()则不会忽略 空格,制表和换行符。原创 2016-11-12 10:35:51 · 1364 阅读 · 0 评论 -
C/C++字符函数库cctype
控制字符:控制字符(Control Character),出现于特定的信息文本中,表示某一控制功能的字符。在ASCII码中,第0~31号及第127号(共33个)是控制字符或通讯专用字符,如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(振铃)等;通讯专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等。打印字符:能够输出的字符叫打印字符。例如:回车原创 2016-11-12 16:12:53 · 627 阅读 · 0 评论 -
C++文件读写详解(ofstream,ifstream,fstream)
目录(?)[-]状态标志符的验证Verification of state flags获得和设置流指针get and put stream pointers二进制文件缓存和同步Buffers and Synchronization在看C++编程思想中,每个练习基本都是使用ofstream,ifstream,fstream,以前粗略知道其用法和含义,在看了几位大牛的博文后转载 2016-11-29 11:56:10 · 902 阅读 · 0 评论 -
C++函数模板 模板实例化、具体化
C++函数模板 模板实例化、具体化 函数模板是C++新增的一种性质,它允许只定义一次函数的实现,即可使用不同类型的参数来调用该函数。这样做可以减小代码的书写的复杂度,同时也便于修改(注:使用模板函数并不会减少最终可执行程序的大小,因为在调用模板函数时,编译器都根据调用时的参数类型进行了相应实例化)。下面来看看函数模板的使用过程:struct job{ char name转载 2016-11-30 21:19:30 · 732 阅读 · 0 评论 -
const指针
const变量和常量都能赋给const指针一级间接关系非const指针可以赋给const指针二级及以上简介关系费const指针不能赋给const指针原创 2016-11-17 20:22:35 · 542 阅读 · 0 评论 -
C++宏定义详解
一、#define的基本用法 #define是C语言中提供的宏定义命令,其主要目的是为程序员在编程时提供一定的方便,并能在一定程度上提高程序的运行效率,但学生在学习时往往不能 理解该命令的本质,总是在此处产生一些困惑,在编程时误用该命令,使得程序的运行与预期的目的不一致,或者在读别人写的程序时,把运行结果理解错误,这对 C语言的学习很不利。1 #define命令剖析转载 2016-09-12 09:43:52 · 562 阅读 · 0 评论