码迷,mamicode.com
首页 > 其他好文 > 详细

std::function,std::bind复习

时间:2014-07-31 23:41:40      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   os   io   cti   ar   div   

#include <iostream>
#include <functional>
//std::bind返回函数对象 void fun1(int a, int b) { std::cout << a << b << std::endl; } using namespace std::placeholders; class A { public: void fun2(int a, int b) { std::cout << a << b << std::endl; } }; int main() { //第一种用法,直接绑定实参 std::bind(fun1, 1, 2)();//调用时把1,2的拷贝作为实参传递给fun1,bind中绑定的参数必须与fun1调用的参数个数相同,参数将会传递给fun1作为入参 //占位符_1的用法,在函数调用时才接受正真的参数 std::bind(fun1, _2, _1)(1, 2);//占位符的名字表示在调用式中顺序,这个表示fun1(2, 1) //绑定成员函数 A a; std::bind(&A::fun2, a, _1, _2)(3, 4);//需要传递类似this指针的东西让这个函数对象调用&必须加 //functon用法,这个最多的用法可以存储bind返回的结果,在以后再需要的时候回调,是一种回调机制 std::function<void(int, int)> func;//function可以存储函数指针对象,之前以为只能存储std::bind func = fun1; func(5, 6); //function调用成员函数 //1.在function中写类名称 std::function<void(A&, int, int)> fun1;//可以赋值int,int返回为void的成员函数 fun1 = std::bind(&A::fun2, _1, _2, _3); fun1(a, 8, 9); //2.在bind里面写类实例,这种方式比较多 std::function<void(int, int)>fun2; fun2 = std::bind(&A::fun2, a, _1, _2); fun2(9, 10); getchar(); return 0; }

 

std::function,std::bind复习,布布扣,bubuko.com

std::function,std::bind复习

标签:style   blog   color   os   io   cti   ar   div   

原文地址:http://www.cnblogs.com/zzyoucan/p/3883683.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!