Primitive Objects
摘要:【Primitive Objects】 Unity can work with 3D models of any shape that can be created with modelling software. However, there are also a number of primitive object types that can be created directly within Unity, namely theCube,Sphere,Capsule,Cylinder,PlaneandQuad. These objects are often useful in th.
阅读全文
Event Functions
摘要:【Event Functions】 A key concept in games programming is that of making changes to position, state and behavior of objects in the game just before eac...
阅读全文
Controlling GameObjects Using Components
摘要:【Accessing Components】 The most common case is where a script needs access to other Components attached to the same GameObject.A Component is actually an instance of a class so the first step is to get a reference to the Component instance you want to work with. This is done with theGetComponentfun.
阅读全文
Material
摘要:【Material】 Materials are used in conjunction withMeshorParticle Systemsattached to theGameObject. They play an essential part in defining how your ob...
阅读全文
Prefabs
摘要:【Prefabs】 APrefabis a type of asset -- a reusableGameObjectstored inProject View. Prefabs can be inserted into any number of scenes, multiple times per scene. When you add a Prefab to a scene, you create aninstanceof it. All Prefab instances are linked to the original Prefab and are essentially clo.
阅读全文
Scene View Navigation
摘要:【Scene View Navigation】Hold the right mouse button to enterFlythroughmode. This turns your mouse andWASDkeys (plusQandEfor up and down) into quick fir...
阅读全文
What's Exposure?
摘要:【What's Exposure?】 ISO:即相机的感光度。ISO数值的大小是DC对光线反应的敏感程度测量值,通常以ISO数值表示,数值越大表示对光线的敏感性越强,数值越小表示越弱,是控制曝光量的一个重要参数。ISO:数值每大1倍,感光敏感度高1倍。100ISO100,ISO200,ISO400,ISO800,ISO1600甚至更高。高ISO的作用: 提高快门速度、画面的明亮程度、可能噪点增多。用高感光度来得到一种特殊的颗粒艺术效果,尤其是拍摄黑白画面,体育、运动、新闻。低ISO的作用: 降低快门速度,能控制画面明亮度、噪点少,清晰好。高清晰照片,特效瀑布、夜景等。设置参考: 专业数
阅读全文
Leveldb Advanced
摘要:[Slice] The return value of theit->key()andit->value()is a simple structure that contains a length and a pointer to an external byte array. Returning...
阅读全文
leveldb
摘要:【LevelDB】 LevelDB is a fast key-value storage library that provides an ordered mapping from string keys to string values.Keys and values are arbitrar...
阅读全文
POP3&SMTP&IMAP
摘要:【POP3&SMTP&IMAP】IMAP是什么? IMAP,即InternetMessageAccessProtocol(互联网邮件访问协议),您可以通过这种协议从邮件服务器上获取邮件的信息、下载邮件等。IMAP与POP类似,都是一种邮件获取协议。IMAP和POP有什么区别? POP允许电子邮件客户端下载服务器上的邮件,但是您在电子邮件客户端的操作(如:移动邮件、标记已读等),这是不会反馈到服务器上的,比如:您通过电子邮件客户端收取了QQ邮箱中的3封邮件并移动到了其他文件夹,这些移动动作是不会反馈到服务器上的,也就是说,QQ邮箱服务器上的这些邮件是没有同时被移动的 。但是IMA
阅读全文
细节决定成败,为什么他能挣15亿
摘要:【细节决定成败,为什么他能挣15亿】 经的同窗好友,起初有着相同的人生经历,然而命运却将两人早就的如此不同,一个是管理现代企业、搏击商海的亿万富翁,一个是公司小职员。 故事主角,刘立荣,湖南益阳人,金立通讯集团董事长兼总裁,身家15亿,手机月均销量45万部,年销售量超500万部,集团年利润超3亿。 故事反面,李盛,湖南新化人,刘立荣的大学同窗,现为上海一电子公司的技术员,月收入5000元。 刘技术能力不强,输给李盛不少。然而刘在做事态度上比李强太多了。这样的故事读书的时候各种人员反复给我灌输, 但我我坚定的认为技术胜过一切。工作4年后的今天,我发现真理确实是:态度>技术。 具体故事参..
阅读全文
GLSL Notes
摘要:【GLSL Notes】API of shader: glCreateShader(), glShaderSource(), glCompileShader(), glGetShadrInfoLog(), glCreateProgram()API of porgram: glCreateProgram(), glAttachShader(), glDetashShader(), glLinkProgarm(), glGetProgarmInfoLog(), glUseProgram()Resource Release: glDeleteShader(), glDeleteProgram(...
阅读全文
Connecting Physics Bodies
摘要:【Connecting Physics Bodies】 The kinds of joints you can create in Sprite Kit. You add or remove joints using the physics world. When you create ...
阅读全文
Pylint
摘要:【Pylint】pylint的调用命令: 1 pylint [options] module_or_package使用 Pylint 对一个模块 module.py 进行代码检查:1. 进入这个模块所在的文件夹,运行pylint [options] module.py这种调用方式是一直可以工作的,因为当前的工作目录会被自动加入 Python 的路径中。2. 不进入模块所在的文件夹,运行pylint [options] directory/module.py这种调用方式当如下条件满足的时候是可以工作的:directory 是个 Python 包 ( 比如包含一个 __init__.py 文件 .
阅读全文
Physicals
摘要:【Physicals】 The physics simulation in Sprite Kit is performed by adding physics bodies to scenes.【Type of Physics Body】 AnSKPhysicsBodyobject define...
阅读全文
Advanced Scene Processing
摘要:【How a Scene Processes Frames of Animation】 In the traditional view system, the contents of a view are rendered once and then rendered again only whe...
阅读全文
Working with Other Node Types II
摘要:【Working with Other Node Types II】 An SKCropNode object does not directly render content, like a sprite node. Instead, it alters the behavior of its ...
阅读全文
OperateParticleWithCodes
摘要:【OperateParticleWithCodes】 Listing 6-6 shows how you might configure an emitter’s scale property. This is a simplified version of a node’s xScale and...
阅读全文
SpriteParticle II
摘要:【SpriteParticle II】 1、Randomizing the Starting Position 2、Setting the Initial Angle 3、Setting a Particle’s Speed 4、Changing a Particle’s Acceler...
阅读全文
Working with Other Node Types
摘要:【Working with Other Node Types】 【Shape Nodes Draw Path-Based Shapes】 The SKShapeNode class draws a standard Core Graphics path. You can see from th...
阅读全文
Working with Sprites
摘要:【Working with Sprites】 1、An SKSpriteNode object can be drawn either as a rectangle with a texture mapped onto it or as a colored, untextured rectangle...
阅读全文
SpriteKitCommonUse
摘要:【SpriteKitCommonUse】 1、SKView中提供了显示FPS和NodeCount(当前view)的方法,如下: 展现一个scene:1 - (void)viewWillAppear:(BOOL)animated2 {3 HelloScene* hello = [[Hel...
阅读全文
SpriteKit
摘要:【SpriteKit】 Sprite Kit provides a graphics rendering and animation infrastructure that you can use to animate arbitrary textured images, or sprites。S...
阅读全文
3D数学基础 KeyNote 1
摘要:【计算几何复习要点】 1、向量加法的几何含意: a+b的释意为:a的尾连上b的头,新建一条从a的尾指向b的头的向量。 2、向量减法的几何含意: a-b的释意为:尾部相连,新建一个从b的头指向a的头的向量。 3、点积,内积: 对于向量a(Xa,Ya)、向量b(Xb,Yb),a与b的点积为:Xa*Xb+
阅读全文
左手坐标系&右手坐标系
摘要:【左手坐标系&右手坐标系】 左手坐标系的正方向。从原点看到某轴正向时,逆时针即为正方向。相反地,从某轴正方向看看原点时,为顺时针即为正方向。 如果判断左手坐标系下叉积的方向。如果A、B向量首尾相连为顺时针,则叉积方向为从屏幕指向自己;否则相反。
阅读全文
iOS's GCD Note
摘要:【iOS's GCD Note】 1、默认有四种全局concureent queue,如下: 通过以下函数来引用: 2、官方文档上并发队列有3种,实际上main就是serial。 1)serial,用一个线程来按序取task执行。so task的顺序可以保证。 2)concurret...
阅读全文
OpenGL复习要点II
摘要:【OpenGL复习要点II】 1、视图变换必须出现在模型变换之前。 2、glMatrixMode()参数有三个,GL_MODELVIEW,GL_PROJECTION,GL_TEXTURE。 3、变换顺序非常重要,代码中后出现的矩阵最先被应用于顶点。 4、投影变幻是在ModelView变幻后再乘一个投影矩阵。 5、glViewPort()指定生成的图像在窗口中的空间,通过指定左下角x,y和width、height来指向。 6、双缓冲并不是加快了渲染,而是把未完成的render放置在了离线环境。 7、glShadeMode为GL_SMOOTH时,图元颜色是顶点色的平滑过度,GL_FLAT时,为任何
阅读全文
OpenGL复习要点
摘要:【OpenGL要点复习】 1、和像素有关的信息(例如像素的颜色)组织成位平面 (bitplane)的形式,位平面又可以组织成帧缓冲区(framebuffer)的形式。位平面是一块内存区域,保存了屏幕上每个像素的1个位的信息。 2、glClearColor()函数确定了窗口将清除成什么颜色,而glCl...
阅读全文
比特币系统剖析
摘要:【比特币系统剖析】 钱包地址: 公钥进行压缩并加上校验位(防止地址输错)转为base58编码成为一个34-35位的字符串。这个就叫做钱包地址。 比特币是什么: 并没有所谓单个的比特币存在。比特币系统里记录的都是一笔笔的比特币交易,每一笔交易都记录都包含上一笔交易(钱从哪儿来)的数字签名,加上下一个持有者的公钥(钱到哪儿去)的数字签名。 交易流程: 首先验证支付钱包地址是否拥有其预支付的比特币数额,如果最近的一次该地址交易记录是有比特币转入并且数量大于其当前所欲支付的数额,即可确认这笔交易可以被支付。第二步计算转出金额和找零,那么在比特币的世界里,钱包地址用过一次后即失去所拥有的比特币...
阅读全文
vim之pydiction插件
摘要:【vim之pydiction插件】 It consists of three main files:python_pydiction.vim -- Vim plugin.complete-dict -- Dictionary file that consists of Python keywords and modules. This is what the plugin refers to.pydiction.py -- Python script you can optionally run to add more modules to complete-dict. Put python_
阅读全文
vim之vba文件
摘要:【vim之vba文件】Vimball官方描述: The vimball plugin facilitates creating, extracting , and listing the contents of “vimball” archives (*.vba).滇狐评价:非常棒的一个插件, 专门用来安装其它插件的。 Vimball 格式的插件安装方便, 只需用 Vim 打开, 执行一下 :so % 即可, 无须用户自己满世界找插件的安装路径, 更无须整天想着更新 helptags。 滇狐已经决定将所有自己编写或修改的插件改为 Vimball 格式了, 而且目前有越来越多的插件使用 Vimb
阅读全文
MacTerminal快捷键
摘要:【MacTerminal快捷键】在Mac系统中并没有Home、End等键,所以在使用时并不是特别的顺手,但是有几个键位组合可以使Terminal的操作更加灵活方便。1、将光标移动到行首:ctrl + a2、将光标移动到行尾:ctrl + e3、清除屏幕: ctrl + l4、清除当前光...
阅读全文
python开发vim插件
摘要:【python开发vim插件】 按如下方式使用python开发vim插件,注意调用时使用的是exec。 但在函数中嵌入python代码更为简便,如下: python如何传递参数给python: 代码头中需要加入以下代码,以防止重复执行: call命令-nargs使用范例如下: 参考: 1、http://my.oschina.net/gschen/blog/135919 2、http://brainacle.com/how-to-write-vim-plugins-with-python.html
阅读全文
vim插件开发初步
摘要:【vim插件开发初步】 将如下代码存在helloworld.vim, 放在~/.vim/plugin目录下,插件即可生效。:w保存代码后, 用:source命令执行后,也可以使用Helloworld命令。 上图代码做了2件事, 其一定义了Helloworld函数,函数输出一条信息,其二定义了命令Helloworld用于调起Helloworld()函数。 另外有几点需要注意的地方: 函数名首字母必须大写; 自定义命令首字母必须大写; -nargs=0表示没有命令行参数; 插件的扩展名必须为.vim。参考:http://my.oschina.net/gschen/blog/135...
阅读全文
vim显示历史命令
摘要:【vim显示历史命令】q: 进入命令历史编辑。类似的还有 q/ 可以进入搜索历史编辑。注意 q 后面如果跟随其它字母,是进入命令记录。可以像编辑缓冲区一样编辑某个命令,然后回车执行。也可以用 ctrl-c 退出历史编辑,但此时历史编辑窗口不关闭,可以参照之前的命令再自己输入。用 :x 关闭历史编辑并放弃编辑结果,也可以在空命令上回车相当于退出。参考:http://zhidao.baidu.com/link?url=Zsi4pz8qxYATGPGkf9wlMbA7xBVdjyCm1jn5c5pQZGH2gtp6lzRcngR0kmMbV6c3pt3q-LeAxQCMKrgkEjz6Ba
阅读全文
vim切换buffer
摘要:【vim切换buffer】 命令 ls 可查看当前已打开的buffer 命令 b num 可切换buffer (num为buffer list中的编号) 其它命令: :bn -- buffer列表中下一个 buffer :bp -- buffer列表中前一个 buffer :b# -- 你之前所在的前一个 buffer :bdelete num -- 删除第num编号buffer 参考: 1、http://www.cnblogs.com/wxzl/archive/2012/07/12/VIM_Buffer.html 2、http://www.blogjava.net/java...
阅读全文
vim之grep
摘要:【vim之grep】 :vimgrep 用于多文件搜索,如 1):vim[grep] start_stage * 在当前目录下(不包括子目录)搜索 2) :vim[grep] start_stage ** 在当前所有目录(包括子目录)搜索 3) :vim[grep] /start_stage/ * 在当前目录下搜索正则start_stage 4):vim[grep] /start_stage/ ** 在当前所有目录下搜索正则start_stage grep四个字符可以省略,即使用时们写vim即可。参考:http://blog.chinaunix.net/uid-14770335-...
阅读全文
install python module
摘要:【install python module】 参考:http://docs.python.org/2.7/install/index.html
阅读全文
vim之quickfix
摘要:【vim之quickfix】 quickfix功能将编译过程中产生的错误信息保存到文件中,然后vim利用这些信息跳转到源文件的对应位置,我们就可以进行错误的修正,之后跳到下一个错误重复上述操作,从而极大地提高编译错误的修改效率。:cc 显示详细错误信息:cp 跳到上一个错误:cn 跳到下一个错误:cw 如果有错误列表,则打开quickfix窗口,没有则什么也不错:cope(n) 打开quickfix窗口,可以在后面添加窗口高度参数,如10行: :copen 10:ccl(ose) 关闭quickfix窗口参考:http://linux.chinaunix.net/techdo...
阅读全文
gdb常用命令
摘要:【gdb常用命令】 缺省gdb是调试主进程的,可是现在采用daemon模式工作的程序那么多,主进程通常很快就结束了,子进程才是真正干活的。怎么跟踪调试子进程呢? 在gdb里面执行: set follow-fork-mode child 则gdb就可以调试子进程了。-------------------------------------------------------------------------------------------------------info registers REGNAME... 列出所指出的所有寄存器的值info break 列出所有的断点和观察点...
阅读全文
gdb之watch命令
摘要:【gdb之watch命令】 什么是watchpoint? watchpoint,顾名思义,其一般用来观察某个变量/内存地址的状态(也可以是表达式),如可以监控该变量/内存值是否被程序读/写情况。 在gdb中可通过下面的几种方法来设置watchpoint: (gdb) watch 在指定变量/内存地址(表达式)expr设置一个watchpoint。一但expr值有变化时,将停住程序。 (gdb) rwatch 当expr被读时,停住程序。 (gdb) awatch 当expr被读或被写时,停住程序。 (gdb) info watchpoints 列出当前所设置了的所有观察点。在使用w...
阅读全文
gdb之x命令
摘要:【gdb之x命令】 可以使用examine命令(简写是x)来查看内存地址中的值。x命令的语法如下所示: x/ n、f、u是可选的参数。 n是一个正整数,表示需要显示的内存单元的个数,也就是说从当前地址向后显示几个内存单元的内容,一个内存单元的大小由后面的u定义。 f 表示显示的格式,参见下面。如果地址所指的是字符串,那么格式可以是s,如果地十是指令地址,那么格式可以是i。 u 表示从当前地址往后请求的字节数,如果不指定的话,GDB默认是4个bytes。u参数可以用下面的字符来代替,b表示单字节,h表示双字节,w表示四字 节,g表示八字节。当我们指定了字节长度后,GDB会从指内...
阅读全文
python's descriptor II
摘要:【python's descriptor II】 For instance,a.xhas a lookup chain starting witha.__dict__['x'], thentype(a).__dict__['x'], and continuing through the base ...
阅读全文
MacOSX快捷键
摘要:【MacOSX快捷键】 关闭显示器:Shift + Ctrl + 退出键 休眠:Command + Option + 退出键 关机:Ctrl + Option + Command + 退出键 打开文件:Command + O
阅读全文
主题敏感词PageRank
摘要:【主题敏感词PageRank】 PageRank忽略了主题相关性,导致结果的相关性和主题性降低,对于不同的用户,甚至有很大的差别。例如,当搜索“苹果”时,一个数码爱好者可能是想要看 iphone 的信息,一个果农可能是想看苹果的价格走势和种植技巧,而一个小朋友可能在找苹果的简笔画。理想情况下,应该为每个用户维护一套专用向量,但面对海量用户这种方法显然不可行。所以搜索引擎一般会选择一种称为主题敏感PageRank(Topic-Sensitive PageRank)的折中方案。主题敏感PageRank的做法是预定义几个话题类别,例如体育、娱乐、科技等等,为每个话题单独维护一个向量,然后想办法关联.
阅读全文
shell调试选项
摘要:【shell调试选项】 一些常用选项的用法: -n 只读取shell脚本,但不实际执行 -x 进入跟踪方式,显示所执行的每一条命令 -c "string" 从strings中读取命令 “-n”可用于测试shell脚本是否存在语法错误,但不会实际执行命令。在shell脚本编写完成之后,实际执行之前,首先使用“-n”选项来测试脚本是否存在语法错误是一个很好的习惯。因为某些shell脚本在执行时会对系统环境产生影响,比如生成或移动文件等,如果在实际执行才发现语法错误,您不得不手工做一些系统环境的恢复工作才能继续测试这个脚本。 “-c”选项使shell解释器从一个字符串中而不是..
阅读全文
shell输出调试信息
摘要:【shell输出调试信息】1、使用trap命令 trap命令用于捕获指定的信号并执行预定义的命令。 其基本的语法是: trap 'command' signal 其中signal是要捕获的信号,command是捕获到指定的信号之后,所要执行的命令。可以用kill –l命令看到系统中全部可用的信号名,捕获信号后所执行的命令可以是任何一条或多条合法的shell语句,也可以是一个函数名。 shell脚本在执行时,会产生三个所谓的“伪信号”,(之所以称之为“伪信号”是因为这三个信号是由shell产生的,而其它的信号是由操作系统产生的),通过使用trap命令捕获这三个“伪信号”并输出相关
阅读全文
C++11用于计算函数对象返回类型的统一方法
摘要:【C++11用于计算函数对象返回类型的统一方法】 模板std::result_of被TR1 引进且被 C++11 所采纳,可允许我们决定和使用一个仿函数其回返值的类别。底下,CalculusVer2对象使用std::result_of对象来推导其仿函数的回返值类别: 如此一来,在实体化CalculusVer2其仿函数时,不会有类别转换,警告或是错误发生。 模板std::result_of在 TR1 和 C++11 有一点不同。TR1 的版本允许实现在特殊情况下,可以无法决定一个函数调用其回返值类别。然而,因为 C++11支持了decltype,实现被要求在所有情况下,皆能计算出回返值...
阅读全文
C++11用于元编程的类别属性
摘要:【C++11用于元编程的类别属性】 许多算法能作用在不同的数据类别; C++ 模板支持泛型,这使得代码能更紧凑和有用。然而,算法经常会需要目前作用的数据类别的信息。这种信息可以通过类别属性 (type traits) 于模板实体化时将该信息萃取出来。 类别属性能识别一个对象的种类和有关一个类别 (class) (或 struct) 的特征。头文件描述了我们能识别那些特征。 底下的例子说明了模板函数‘elaborate’是如何根据给定的数据类别,从而实体化某一特定的算法 (algorithm.do_it)。 通过定义在的类别属性,自定的类别转换是可能的 (在模板中,static_ca...
阅读全文
C++11多态函数对象包装器
摘要:【C++11多态函数对象包装器】 针对函数对象的多态包装器(又称多态函数对象包装器)在语义和语法上和函数指针相似,但不像函数指针那么狭隘。只要能被调用,且其参数能与包装器兼容的都能以多态函数对象包装器称之(函数指针,成员函数指针或仿函数)。 通过以下例子,我们可以了解多态函数对象包装器的特性: 模板类function将定义在头文件参考:http://zh.wikipedia.org/wiki/C++0x#.E5.A4.9A.E6.80.81.E5.87.BD.E6.95.B0.E5.AF.B9.E8.B1.A1.E5.8C.85.E8.A3.85.E5.99.A8
阅读全文
C++11包装引用
摘要:【C++11包装引用】 我们可以通过实体化样板类reference_wrapper得到一个包装引用 (wrapper reference)。包装引用类似于一般的引用。对于任意对象,我们可以通过模板类ref得到一个包装引用 (至于 constant reference 则可通过cref得到)。 当样板函数需要形参的引用而非其拷贝,这时包装引用就能派上用场: 这项功能将加入头文件。参考:http://zh.wikipedia.org/wiki/C++0x#.E5.8C.85.E8.A3.85.E5.BC.95.E7.94.A8
阅读全文
C++11能用智能指针
摘要:【C++11能用智能指针】 shared_ptr是一引用计数 (reference-counted) 指针,其行为与一般 C++ 指针即为相似。在 TR1 的实现中,缺少了一些一般指针所拥有的特色,像是别名或是指针运算。C++11新增前述特色。 一个shared_ptr只有在已经没有任何其它shared_ptr指向其原本所指向对象时,才会销毁该对象。 一个weak_ptr指向的是一个被shared_ptr所指向的对象。该weak_ptr可以用来决定该对象是否已被销毁。weak_ptr不能被解参考; 想要访问其内部所保存的指针,只能通过shared_ptr。有两种方法可达成此目的。第一,类...
阅读全文
C++正则表达式
摘要:【C++正则表达式】 这个新的程序库,被定义于头文件,由几个新的类型所组成:正则表达式(样式)以样板类basic_regex的实体表示样式匹配的情况以样板类match_results的实体表示 函数regex_search是用来搜索样式; 若要搜索并取代,则要使用函数regex_replace,该函数会回传一个新的字符串。算法regex_search和regex_replace接受一个正则表达式(样式)和一个字符串,并将该样式匹配的情况存储在 structmatch_results。 底下描述了match_results的使用情况: 参考:http://zh.wikipedia.org...
阅读全文
C++11散列表
摘要:【C++11散列表】 散列表对应于C++03中的hash_xxx,分为set和map两种 上述的类型将满足对一个容器类型的要求,同时也提供访问其中元素的成员函数:insert,erase,begin,end。 散列表需引入和两个头文件。参考:http://zh.wikipedia.org/wiki/C++0x#.E9.9B.9C.E6.B9.8A.E8.A1.A8
阅读全文
C++11多元组类别
摘要:【C++11多元组类别】 多元组可被视为是struct其数据成员的一般化。底下是一个多元组类别的定义和使用情况: 我们可以定义一个多元组类别对象proof而不指定其内容,前提是proof里的元素其类别定义了默认构造函数 (default constructor)。此外,以一个多元组类别对象赋值给另一个多元组类别对象是可能的,但只有在以下情况: 若这两个多元组类别相同,则其内含的每一个元素其类别都要定义拷贝构造函数 (copy constructor); 否则的话,赋值操作符右边的多元组其内含元素的类别必须能转换成左边的多元组其对应的元素类别,又或者赋值操作符左边的多元组其内含元素的类别...
阅读全文
C++11之sizeof
摘要:【C++11之sizeof】 在标准C++,sizeof可以作用在对象以及类别上。但是不能够做以下的事: 这会传回OtherType的大小。C++03并不允许这样做,所以会引发编译错误。C++11将会允许这种使用。参考:http://zh.wikipedia.org/wiki/C++0x#.E5.85.81.E8.A8.B1sizeof.E9.81.8B.E7.AE.97.E5.AD.90.E4.BD.9C.E7.94.A8.E5.9C.A8.E9.A1.9E.E5.88.A5.E7.9A.84.E8.B3.87.E6.96.99.E6.88.90.E5.93.A1.E4.B8.8A....
阅读全文
C++11静态assert
摘要:【C++11静态assert】 C++11新的关键字static_assert可以解决模板中的状态检察。 声明采取以下的形式: 这里有一些如何使用static_assert的例子: 当常数表达式值为false时,编译器会产生相应的错误信息。第一个例子是前处理器指令#error的替代方案;第二个例子会在每个模板类型Check生成时检查assertion。 静态assertion在模板之外也是相当有用的。例如,某个算法的实现依赖于long long类别的大小比int还大,这是标准所不保证的。 这种假设在大多数的系统以及编译器上是有效的,但不是全部。参考:http://zh.wiki...
阅读全文
C++11之使用或禁用对象的默认函数
摘要:【C++11之使用或禁用对象的默认函数】 C++11 允许显式地表明采用或拒用编译器提供的内置函数。例如要求类型带有默认构造函数,可以用以下的语法: 另一方面,也可以禁止编译器自动产生某些函数。如下面的例子,类型不可复制: = delete的声明(同时也是定义)也能适用于非内置函数, 禁止成员函数以特定的形参调用: 若尝试以 double 的形参调用f(),将会引发编译期错误, 编译器不会自动将 double 形参转型为 int 再调用f()。 若要彻底的禁止以非int的形参调用f(),可以将= delete与模板相结合: 参数:http://zh.wikipedia.o...
阅读全文
C++11变长参数模板
摘要:【C++11变长参数模板】 C++03只有固定模板参数。C++11 加入新的表示法,允许任意个数、任意类别的模板参数,不必在定义时将参数的个数固定。 实参的个数也可以是 0,所以tuple someInstanceName这样的定义也是可以的。 若不希望产生实参个数为 0 的变长参数模板,则可以采用以下的定义: 【变长函数参数包】 除了在模板参数中能使用...表示不定长模板参数外,函数参数也使用同样的表示法代表不定长参数。 其中,Params与parameters分别代表模板与函数的变长参数集合, 称之为参数包 (parameter pack)。参数包必须要和运算符"......
阅读全文
C++11无限制的unions
摘要:【C++11无限制的unions】 在标准 C++ 中,并非任意的类型都能做为 union 的成员。比方说,带有 non-trivial 构造函数的类型就不能是 union 的成员。在新的标准里,移除了所有对 union 的使用限制,除了其成员仍然不能是引用类型。 这一改变使得 union 更强大,更有用,也易于使用。 参考:http://zh.wikipedia.org/wiki/C++0x#.E6.A8.A1.E6.9D.BF.E7.9A.84.E5.88.A5.E5.90.8D
阅读全文
C++11模板的别名
摘要:【C++模板的别名】参考:http://zh.wikipedia.org/wiki/C++0x#.E6.A8.A1.E6.9D.BF.E7.9A.84.E5.88.A5.E5.90.8D
阅读全文
C++11角括号
摘要:【C++11角括号】 标准 C++ 的剖析器一律将 ">>" 视为右移运算符。 但在样板定义式中,绝大多数的场合其实都代表两个连续右角括号。 为了避免剖析器误判,撰码时不能把右角括号连着写。 C++11 变更了剖析器的解读规则;当遇到连续的右角括号时,优先解析右角括号为样板引数的退出符号。 如果解读过程中出现普通括号("(" 与 ")"),这条规则产生变化: 参考:http://zh.wikipedia.org/wiki/C++0x#.E5.BC.B7.E5.9E.8B.E5.88.A5.E5.88.97.E8.88.89
阅读全文
C++11强类型枚举
摘要:【C++11强类型枚举】 在标准C++中,枚举类型不是类型安全的。枚举类型被视为整数,这使得两种不同的枚举类型之间可以进行比较。C++03 唯一提供的安全机制是一个整数或一个枚举型值不能隐式转换到另一个枚举别型。 此外,枚举所使用整数类型及其大小都由实现方法定义,皆无法明确指定。 最后,枚举的名称全数暴露于一般范围中,因此C++03两个不同的枚举,不可以有相同的枚举名。 (好比enum Side{ Right, Left };和enum Thing{ Wrong, Right };不能一起使用。)C++11 引进了一种特别的 "枚举类",可以避免上述的问题。使用enum c
阅读全文
C++11之nullptr
摘要:【C++11空指针】 1、NULL的问题 运行结果: 2、nullptr 解决问题 早在 1972 年,C语言诞生的初期,常数 0 带有常数及空指针的双重身分。 C 使用 preprocessor macro NULL 表示空指针, 让 NULL 及 0 分别代表空指针及常数 0。 NULL 可被定
阅读全文
C++11显式虚函数重载
摘要:【C++11显式虚函数重载】 在子类中给重载的虚函数加上override, 可以让编译器检察基类是否有这一虚函数。此功能适用于当基类原有的虚函数发生变化,即相当于编译期检察。 而基类,可以给函数加上final修饰符来告诉编译器这函数不希望被子类覆盖。 override与final都不是语言关键字(keyword),只有在特定的位置才有特别含意,其他地方仍旧可以作为一般指示字(identifier)使用。 参考:http://zh.wikipedia.org/wiki/C++0x#.E9.A1.AF.E5.BC.8F.E8.99.9B.E5.87.BD.E6.95.B8.E9.87.8...
阅读全文
C++11对象构造的改良
摘要:【C++11对象构造的改良】 C++03中一个构造函数无法构造另一个构造函数,因为A()实际上意味着生成一个临时对象,存在语音混淆。详情请看参考2。 C++11中允许直接在初始化列表中调用其它的构造函数: 另外,C++11允许通过using命令直接把基类的构造函数转换为本类的构造函数: 最后,C++11支持直接对类成员用=与赋初始值。 参考: 1、http://zh.wikipedia.org/wiki/C++0x#.E7.89.A9.E4.BB.B6.E5.BB.BA.E6.A7.8B.E7.9A.84.E6.94.B9.E8.89.AF 2、http://blog.chi...
阅读全文
C++11lambda表达式
摘要:【C++11lambda表达式】 mutable 修饰符,用于修改[]中以值传递的变量,无mutable修饰符的话则不行。 使用示例: 1 #include <vector> 2 #include <iostream> 3 #include <algorithm> 4 #include <funct
阅读全文
C++11for循环
摘要:【C++11for循环】 for述句将允许简单的范围迭代,引用或非引用形式均可: 参考:http://zh.wikipedia.org/wiki/C++0x
阅读全文
C++11之 auto
摘要:【C++11类型推导】 1、使用auto的时候,编译器根据上下文情况,确定auto变量的真正类型。auto在C++14中可以作为函数的返回值,因此auto AddTest(int a, int b)的定义是没问题的。 2、只能用于定义函数,不能用于声明函数。 但如果把实现写在头文件中,可以编译通过,
阅读全文
C++11初始化列表
摘要:【C++11之初始化列表】 在C++03中,在严格遵守POD的定义和限制条件的结构及类型上可以使用初始化列表(initializer list),构想是结构或是数组能够依据成员在该结构内定义的顺序通过给予的一串引数来产生。非POD的类型不能使用,就连相当有用的STL容器std::vector也不行。 C++11将会把初始化列表的概念绑到类型上,称作std::initializer_list。这允许构造函数或其他函数像参数般地使用初始化列表。 这个构造函数是种特殊的构造函数,称作初始化列表构造函数。有着这种构造函数的类型在统一初始化的时候会被特别对待。 类型std::initialize...
阅读全文