【C++ 11新特性】 function
来源:互联网 发布:游戏计时器软件 编辑:程序博客网 时间:2024/06/05 02:10
原创作品,转载请标明:http://blog.csdn.net/xiejingfa/article/details/47040203
std:function 介绍
std:function是C++ 11 中新添加的一个class template。在coco2dx 3.x中广泛使用了std:function模板,比如EventListenerTouchOneByOne中利用该模板实现回调:
typedef std::function<bool(Touch*, Event*)> ccTouchBeganCallback; typedef std::function<void(Touch*, Event*)> ccTouchCallback; ccTouchBeganCallback onTouchBegan; ccTouchCallback onTouchMoved; ccTouchCallback onTouchEnded; ccTouchCallback onTouchCancelled;类模板std:function定义在functional头文件中,是一种通用的多态函数包装器,std:function的实例可以存储、复制、调用任何可调用对象。在C++中,可调用对象包括普通函数、函数指针、Lambda表达式、bind创建的函数以及其它函数对象。std:function是对C++可调用对象的一种类型安全的包装,与函数指针相比,std:function的目标既可以是普通函数,也可以是函数对象和类的成员对象。
怎样使用std:function
1、普通函数
int add(int x, int y){return x + y;}int main(){function<int (int, int)> fun = add;cout << fun(1, 9) << endl; // 输出10}
2、函数对象
class Num{public:void operator() (int i){cout << "here i = " << i << endl;}};int main(){Num num;function<void (int)> fun = num;fun(10); // 输出 here i = 10}
3、类的成员函数
class A{public: int add(int x, int y){return x + y;}};int main(){A a;function<int (A &, int, int)> func = &A::add;cout << func(a, 1, 9) << endl;}
详细介绍,可以参考cppreference.com: http://en.cppreference.com/w/cpp/utility/functional/function
0 0
- 【C++ 11新特性】 function
- C++11新特性之std::function
- C++11新特性之std::function
- C+11 新特性
- 【C++】C++11特性:lambda和function
- [C++]C++11新特性
- 【C++】 C++11新特性
- C++新特性(function+bind)
- 【C++11】新特性——std::function
- C++11新特性之std::bind与std::function
- C++11新特性之std::function & std::bind
- 【C++】了解C++11新特性
- C++:C++11新特性详解(1)
- javascript新特性let,function*,yield,promise
- ECMASCript5新特性之Function.prototype.bind
- JDK8新特性☞Function测试
- 12c新特性
- Objective-C新特性
- 2012年5月SAT香港真题解析
- 同步机制摘要
- 【Caffe】训练MNIST数据集模型
- Cocos2d-x中获取系统时间
- Linux常用命令总结
- 【C++ 11新特性】 function
- hdu 5126 stars ( CDQ分治 + 树状数组)
- string 与 CString的区别
- iOS编程学习
- iOS开发UI篇—UIScrollView控件实现图片缩放功能
- 设置Tomcat启动窗体Title
- Android中dip、dp、sp、pt和px的区别
- 最全正则表达式汇总—想要的都有了
- 层次遍历二叉树