C++
文章平均质量分 58
蝶泳奈何桥.
这个作者很懒,什么都没留下…
展开
-
C++按值返回、按址返回、按别名返回开销的区别
好久木有写博客了,前一段时间忙着毕业论文和答辩。最近对游戏开发方面比较有兴趣,就学习了一下C++,因为很多游戏引擎都支持C++。花了几天的时间基本系统的学习了一下C++的语法规范,看得是范类的C++视频教程。这里附上网盘地址:http://pan.baidu.com/s/1c0lB1Pu ,废话不多说鸟,看下面分别用代码表示一下三种返回:A fn1(A a) //按值返回A* fn原创 2014-02-26 01:18:14 · 1608 阅读 · 2 评论 -
c++11中的右值引用以及移动构造
拷贝构造是形参是const对象的引用,不可以修改该引用对象而移动构造德尔形参是右值引用,可以修改引用对象。下面是《深入理解c++11》中对拷贝构造和移动构造的对比图,(ps:根据图的拷贝构造,可以看出该拷贝构造是一个深拷贝,成员指向了一个新的内存地址)以下是自己的实现,看注释class Human{public: Human() : mNu原创 2015-11-29 15:47:20 · 686 阅读 · 0 评论 -
c++11中的委派构造函数
有了委派构造函数,就不用每个构造版本都做同样的初始化工作,只需要不断形参少的委派就行了以下是《深入理解c++11》中的截图以下是自己的实现#include #include #include #include /*委派构造函数的使用,类似与构造基类*/class Info{public: Info() { init(); } //Info(in原创 2015-11-29 15:54:33 · 1716 阅读 · 0 评论 -
c++游戏中接入lua脚本系统
接入lua大部分都是为了热更,直上主题Lua脚本系统的接入创建脚本lua_state*,loadLua函数请看下面动态加载lua时,把每个lua文件都作为一个独立的环境,一般一个lua文件对应ui界面的逻辑,至于不同ui(即不同独立环境间)的通信等下说loadLua加载lua文件的方法int CLuaEngine::loadLua(const std原创 2015-12-02 04:13:18 · 2268 阅读 · 0 评论 -
博客搬家 -> www.wilkeryun.com-> 搬回csdn
前段时间租了个海外的v,p,s服务器,做了v,p,n代,理,翻,墙起来方便多了,搜索基本都使用Google了,解决方案简直就是快准狠,有些技术资料(比如ue4)国内还太少,百度出的东东太少。除了做代,理之外,还多有很多空间、内存、流量,感觉别浪费了就拿来搭个个人博客。现在也有一键安装lnmp环境的,博客程序用的是WordPress,强大,插件多,很方便。玩着玩着就认真了,Linux下的命令一点原创 2016-02-13 13:33:53 · 802 阅读 · 0 评论 -
c/c++混编,导出接口给lua调用
最主要是为了使用c++11的里面的一些东西,但这c11的东西又不能直接被lua调用,必须使用c还做 媒人lua注册文件 lnetRegc编写lua dll动态库编写lua lib静态库lua注册文件 lnetReg.c#include <lua.h>#include <lauxlib.h>#include <stdbool.h>#define LUA_API_EXPORT __declsp原创 2016-07-29 03:05:38 · 1573 阅读 · 0 评论 -
【C++11】随机数函数库random
1.随机数由生成器和分布器结合产生生成器generator:能够产生离散的等可能分布数值分布器distributions: 能够把generator产生的均匀分布值映射到其他常见分布,如均匀分布uniform,正态分布normal,二项分布binomial,泊松分布poisson2.分布器利用运算符()产生随机数,要传入一个generator对象作为参数转载 2016-08-03 20:22:45 · 8514 阅读 · 0 评论 -
UE4容器TArray、TMap的使用
ue中特有容器的使用1、Log日志宏输出到屏幕上的调试日志会覆盖,在output log窗口则可以全部显示,所以先写个打日志的宏DECLARE_LOG_CATEGORY_EXTERN(MyContaimTest, Log, All);DEFINE_LOG_CATEGORY(MyContaimTest)//调试日志UE_LOG(MyContaimTest, War原创 2016-07-31 13:56:50 · 52003 阅读 · 2 评论 -
vector内存机制和性能分析
原文出处:http://blog.csdn.net/mfcing/article/details/8746256 不用版本的stl库,动态增长的倍数可能不同,具体进源码里面就一目了然(stl里面的源码都是模板写得,也是有点恶心)一些好的公司校园招聘过程中(包括笔试、面试环节),经常会涉及到STL中vector的使用(主要是笔试)及其性能(面试)的分析。今天看了下相关文章,也转载 2016-08-01 23:30:07 · 2337 阅读 · 0 评论 -
c++ unordered_map 源码的解析
一般情况下,使用 hash 结构,需要有桶的概念,那么 unordered_map 是如何自动管理桶的,这个问题其实再细分的话是这样的:初始的桶是如何设置的当需要扩容的时候,是如何重新分布的对于 string,unordered_map 的默认哈希函数是怎样的代码位于 /usr/include/c++/4.1.2/tr1/,编译器版本比较老,在这个目录下,有这些文件转载 2016-08-01 23:32:48 · 8188 阅读 · 0 评论 -
c++11中的using关键字
一般的using关键子我们都是用来声明当前文件的命名空间,比如标准库的命名空间std-> using namespace std;但在c++11中,它的用处还有几个 1:取代typedef ,2:让父类同名函数在子类中以重载方式使用以下是《深入理解c++11》的对1:的截图以下是自己的实现//------------------------------------原创 2015-11-29 15:20:07 · 24237 阅读 · 0 评论 -
c++11中的智能指针
下面是《深入理解c++11》中的截图在头文件中,使用std::命名空间以下是自己的实现,有更详细的注释#include #include #include #include #include class Human{public: Human() : mNum(nullptr) { mNum = new int(1原创 2015-11-29 14:41:54 · 667 阅读 · 0 评论 -
C++11新特性lambda表达扫盲篇
C++11添加了一项名为lambda表达式的新功能,通过这项功能可以编写内嵌的匿名函数,而不必编写独立函数和函数对象,使得代码更容易理解。lambda表达式的语法如下所示:[capture_block](parameters) exceptions_specification -> return_type {body}[捕捉快](参数) 异常 -> 返回值类型 {主体}以下是关转载 2014-04-22 23:23:40 · 953 阅读 · 0 评论 -
Objective-c中copy,retain,assign,readonly,read write,nonatomic的区别
nonatomic:非原子性访问,对属性赋值的时候不加锁,多线程并发访问会提高性能。如果不加此属性,则默认是两个访问方法都为原子型事务访问。(atomic是Objc使用的一种线程保护技术,基本上来讲,是防止在写未完成的时候被另外一个线程读取,造成数据错误。而这种机制是耗费系统资源的,所以在iPhone这种小型设备上,如果没有使用多线程间的通讯编程,那么nonatomic是一个非常好的选择。)转载 2014-04-23 23:06:48 · 858 阅读 · 0 评论 -
cocos2dx lua中使用class实现继承api中的类
直接上代码,代码中有解释原创 2014-06-28 21:24:38 · 1381 阅读 · 0 评论 -
c++对象模型
最近看了本 《c++ 对象模型》的书,收益良多。讲了c++对象中成员的分布,虚函数表等。先看图类的层次结构dev类等成员分布下面是代码,获取成员数据都是通过内存偏移,所以即使是父类的私有方法获成员,都可以访问到,只能说指针太强大了typedef void(*Fun)(void); //void类型的函数指针 //适用于无实例对象,例如全局函数原创 2015-11-21 10:09:55 · 535 阅读 · 0 评论 -
c++ STL 算法库用法
把《EffectiveSTL》和 《STL 源码剖析》又翻了一下,发现c++ 的算法库和标准模板库提供好多高效支持,正确使用必定可以使代码的效率翻翻。不过stl和算法库的源码比较难读懂,不过了解一下里面用了什么算法还是有助于写代码是性能和效率的取舍。下面的代码是平时对算法库和stl的一些使用#include #include #include #include #include原创 2015-11-22 21:50:33 · 1387 阅读 · 0 评论 -
ue4中读取excel导出的二进制流文件
ue4中读取excel导出的二进制流文件 (把我在虚幻社区中的帖子再造了一次轮子,http://www.unrealchina.net/forum.php?mod=viewthread&tid=93910&extra=&page=1)这个例子是ue4的,其他的如cocos2dx的话,只需要把c++代码拿来自己整合就行了。读取流文件到内存中,然后按照字段大小在内存地址中正确的偏移,读取正原创 2015-11-21 11:15:55 · 4269 阅读 · 3 评论 -
C++ iterator 前++ 后++ 效率区别
stl中的遍历可以是一下两种之一for(iterator it =begin(); it != end(); ++it) 此处的 begin()《==》this->begin() 或者for(iterator it = begin(); it != end(); it++) 区别是什么呢?? 对于两种方式来说:for(iterat原创 2015-12-28 00:11:25 · 7202 阅读 · 0 评论 -
c++ 对象模型(二)
《c++ 对象模型》讲到了,对于虚函数表指针的分布,直接截书中的图先上代码struct no_virts{ int d1; int d2;};class has_virts : public no_virts{public: int d3; virtual void foo() { printf("--- has_virts foo \n"); } };void原创 2015-11-21 10:19:53 · 543 阅读 · 0 评论 -
字节对齐
一、快速理解1. 什么是字节对齐?在C语言中,结构是一种复合数据类型,其构成元素既可以是基本数据类型(如int、long、float等)的变量,也可以是一些复合数据类型(如数组、结构、联合等)的数据单元。在结构中,编译器为结构的每个成员按其自然边界(alignment)分配空间。各个成员按照它们被声明的顺序在内存中顺序存储,第一个成员的地址和整个结构的地址相同。为了使CPU能够对变量进原创 2015-11-21 09:56:19 · 623 阅读 · 0 评论 -
c++模板实现多参数任意传 - 类实现
之前写的有篇文章是用方法实习的变长参数,这边就是用类实现的,更加高大上,这样就可以对不同的实例对象进行处理。 下面是《深入理解c++11》书中的截图下面是自己实现的代码//--------------------- 实现模板的递归 begin ------------------template class MultiArgs; //变长模板声明,一定要最上原创 2015-11-29 14:32:09 · 6623 阅读 · 0 评论 -
c++11中decltype的妙用
下面是《深入理解c++11》中的部分截图以下是自己的实现,实用几个宏,实现对多用类成员变量的setter和getter#define GetProperty(Var,VarName) inline auto Get##VarName() const ->decltype(Var) { return Var;}#define SetProperty(Var,Va原创 2015-11-29 14:53:17 · 5010 阅读 · 1 评论 -
c++模板实现多参数任意传 - 方法实现
游戏中lua脚本中,如果实现了c++调用lua脚本时参数任意传,那真的是爽的一逼。这个是从《c++ primer plua 6th》中看到的,是以方法实现的递归,在另一本书《modern c++ design》中,使用的更高级,是以类的继承实现递归,后面的文章中将会贴出。利用c++的模板,自己在定个数据结构,重载多个方法去实现不同参数的匹配,装到自己定的数据结构中,最后在对lua的压栈过程中压原创 2015-11-21 10:37:01 · 2227 阅读 · 0 评论 -
Mac_XCode编译ios静态库
在 xcode 下编译并使用 ios 的 .a 静态库 整个过程也类似 vs 编译 lib静态库新建静态库工程File -> New -> Project,选择静态库模板工程命名为 StaticLib库还没有编译出来是红色的添加接口在 StaticLib 文件夹下创建选择 类文件,才能同时创建 .h头文件 和 .m实现文件命名类为 Actor创建添加代码 Actor.h原创 2017-05-11 21:54:19 · 2755 阅读 · 0 评论