boost::bind()
来源:互联网 发布:seo分析工具 编辑:程序博客网 时间:2024/06/05 02:16
其实boost::bind的原理是函数对象,而函数对象就是一个重载了()操作符的对象,这样我们就可以像调用一个方法一样来调用一个类上的这个操作符,比如a(),其实你是在调用a这个对象的()方法,而不是调用一个叫a的方法。
一般来说boost::bind有两种方式的调用,一种是对自由方法,也取非类方法, 一种是对类方法。
对自由方法来说,直接boost::bind(函数名, 参数1,参数2,…)
对类方法来说,直接boost::bind(&类名::方法名,类实例指针,参数1,参数2)
这里需要额外注意的问题是,函数对象也可以像自由方法一样被bind,而boost::function也是一种函数对象。
接下来我们需要注意什么情况下需要用_1, _2这样的参数。
举个例子
void test(int a, int b, int c)
boost::bind(test, 1, _1, _2)得到一个函数对象b,当我们调用b(3,4)时,相当于调用test(1,3,4)
boost::bind(test, _2, 3, _1)得到一个函数对象b,当我们调用b(3,4)时,相当于调用test(4,3,3)
看明白了没有?你实际上可以指定一些常量和一些占位符进去,_x这样的就是占位符,_1表示实际调用时的参数位置,也即b(3,4)时_1代表3,_2代表4
当然你也可以将所有的参数都指定
比如boost::bind(test,1,2,3),那么在调用b()时就相当于调用test(1,2,3)
阅读全文
0 0
- boost.bind
- boost::bind
- boost::bind
- boost::bind
- Boost::bind
- Boost::bind
- bind -boost
- boost::bind()
- boost bind
- boost::bind
- boost::bind
- boost::bind
- boost bind
- boost::bind
- boost::bind()
- boost::bind
- boost::bind
- boost::bind
- New era China, A Global symbol
- JSP学习
- 点亮细胞181-190
- String的==
- pillow 灰色图像转换
- boost::bind()
- 点亮细胞191-200
- 创建一个杂项字符设备模版
- 第九周【项目3
- 链表中LinkList L与LinkList *L的区别
- 机器学习故事汇-搞定支持向量机(SVM)
- Spring配置过程(一)反转控制/依赖注入IOC
- 点亮细胞201-210
- python基础