转载标明出处:http://blog.csdn.net/notbaron/article/details/38406693
上篇回顾
上篇中,蛤蟆学习CallFunc函数的使用。但是针对CC_CALLBACK_0等宏定义没有深入学习之。这次蛤蟆要好好琢磨琢磨,遗憾的是下班有点晚了。现在已经是晚上21:30了。
那接下去那赶紧开搞吧。
理论介绍
论坛上经常有大虾在讨论C++11什么的,那么蛤蟆就百度了一下,以下摘自百度百科:
C++11标准,原名C++0x。为目前C++编程语言的最新正式标准(ISO/IEC14882:2011)。它将取代第二版标准ISO/IEC14882:2003(第一版ISO/IEC14882:1998公开于1998年,第二版于2003年更新,分别通称C++98以及C++03,两者差异很小)。C++11包含了核心语言的新机能,并且拓展C++标准程序库,并且加入了大部分的C++Technical Report 1程序库(数学上的特殊函数除外)。C++ 标准委员会计划在2010年8月之前完成对最终委员会草案的投票,以及于2011年3月3召开的标准会议完成国际标准的最终草案。最终于2011年8月12日公布,并于2011年9月出版。2012年2月28日的国际标准草案(N3376)是最接近于现行标准的草案(编辑上的修正)。此次标准为13年第一次重大修正。[1]
ISO将在2014、2017年发布C++的后续版本。
当然还根据蛤蟆上网查找,其实目前最新正在准备的标准有一个叫C++14,就是14年发布的意思,也是今年之一。计划作为C++11的一个小扩展
接着我介绍下本次的学习主角:std::bind 。
这是个标准函数而已,std是命名空间嘛,然后bind表示函数名字。
它有什么作用呢?
说白就是绑定函数变成一个新的函数,额,最后得到的还是一个函数。
为什么要用它呢?
蛤蟆觉得应该是这样的。曰:实现类似函数指针的功能,但却却比函数指针更加灵活
绑定和不绑定的变化在哪里?
变化就在于调用新函数需要的参数可以不一样了。
举例例子如下:
如果有个函数是这样的
int f_old(int, char, double);//该函数又3个参数,然后我们下一步绑定之。
auto f_new= bind(f, _1, ‘a’, 1.1); // 绑定f_old()函数调用的第二个和第三个参数,同时返回一个新的函数对象为f_new,这个函数只带有一个int类型的参数
int x = f_new(88); //这样我们调用他的时候,其实是调用的函数f_old(99, ‘a’, 1.1);
是不是很好理解。
小伙伴们有空的可以去学习下std::function的使用。
总结
本次蛤蟆记录了CC_CALLBACK的原理,并没有代码。大伙儿可以结合笔记15一起看哈,如有问题请斧正之。