std::function与std::bind 函数指针
来源:互联网 发布:双十一淘宝海报尺寸 编辑:程序博客网 时间:2024/06/05 03:34
function模板类和bind模板函数,使用它们可以实现类似函数指针的功能,但却却比函数指针更加灵活,特别是函数指向类 的非静态成员函数时。
std::function可以绑定到全局函数/类静态成员函数(类静态成员函数与全局函数没有区别),如果要绑定到类的非静态成员函数,则需要使用std::bind。
#include <iostream>#include <functional>using namespace std;typedef std::function<void ()> fp;void g_fun(){cout<<"g_fun()"<<endl;}class A{public:static void A_fun_static(){cout<<"A_fun_static()"<<endl;}void A_fun(){cout<<"A_fun()"<<endl;}void A_fun_int(int i){cout<<"A_fun_int() "<<i<<endl;}//非静态类成员,因为含有this指针,所以需要使用bindvoid init(){fp fp1=std::bind(&A::A_fun,this);fp1();}void init2(){typedef std::function<void (int)> fpi;//对于参数要使用占位符 std::placeholders::_1fpi f=std::bind(&A::A_fun_int,this,std::placeholders::_1);f(5);}};int main(){//绑定到全局函数fp f2=fp(&g_fun);f2();//绑定到类静态成员函数fp f1=fp(&A::A_fun_static);f1();A().init();A().init2();return 0;}
同时,std::bind绑定到虚函数时会表现出多态行为。
#include <iostream>#include <functional>using namespace std;typedef std::function<void ()> fp;class A{public:virtual void f(){cout<<"A::f()"<<endl;}void init(){//std::bind可以表现出多态行为fp f=std::bind(&A::f,this);f();}};class B:public A{public:virtual void f(){cout<<"B::f()"<<endl;}};int main(){A* pa=new B;pa->init();return 0;}
0 0
- std::function与std::bind 函数指针
- std::function与std::bind 函数指针
- std::function与std::bind 函数指针
- std::function与std::bind 函数指针
- std::function与std::bind 函数指针
- std::function与std::bind 函数指针
- std::function与std::bind 函数指针
- std::function与std::bind 函数指针
- std::function与std::bind 函数指针
- std::function与std::bind 函数指针
- std::function与std::bind 函数指针
- std::function与std::bind 函数指针
- std::function与std::bind 函数指针
- std::function与std::bind 函数指针
- std::function与std::bind 函数指针
- std::function与std::bind 函数指针
- std::function与std::bind 函数指针
- 【cocos2dx】std::function与std::bind 函数指针
- Apache2不能启动的解决办法(提示could not bind to address 0.0.0.0:80)
- 时间复杂度和空间复杂度 3
- Majority Element
- 垂直居中的几种方法比较(纯CSS)
- 搜索背后的奥秘——浅谈语义主题计算
- std::function与std::bind 函数指针
- 多线程编程复习 windows线程函数必须为全局函数或者静态函数
- Exec函数对应的系统调用处理过程
- CS 106A JAVA学习
- 滚粗的HNOI2015
- 第四届华中区程序设计邀请赛暨武汉大学第十三届校赛 网络预选赛
- 2.cpp
- java IO 操作注意事项
- Objective-C相关Category的收集