C++ 11 笔记 (四) : std::bind
2014-04-24 13:27
218 查看
std::bind 接受一个可调用的对象,一般就是函数呗。。
还是先上代码:
我们可以通过std::bind调用这个函数:
其中7,8,9是传给func函数的参数。看这恶心的声明,简直比上一篇博客举得例子还要恶心,所以auto又大显身手了:
短了好多好多啊。。。
这时候我们调用:
就会打印“hello!789”了。
然后再说一下占位符,我们把test_bind改成这样:
这时候我们可以调用:
就会打印“hello!129”。也就是前两个参数是可以指定的了。(第三个参数不可以)。
其中 std::placeholders::_1 是占位符,我试了试好像能到 _20 (这。。)
在我看来,std::bind这个东西用在写事件回调中很好用~~~
还是先上代码:
void func(int x, int y, int z) { std::cout << "hello!" << x << y << z << std::endl; }
我们可以通过std::bind调用这个函数:
std::_Bind<true, void, void(*const)(int, int, int), int, int, int> test_bind = std::bind(func, 7, 8, 9);
其中7,8,9是传给func函数的参数。看这恶心的声明,简直比上一篇博客举得例子还要恶心,所以auto又大显身手了:
auto test_bind = std::bind(func, 7, 8, 9);
短了好多好多啊。。。
这时候我们调用:
test_bind();
就会打印“hello!789”了。
然后再说一下占位符,我们把test_bind改成这样:
auto test_bind = std::bind(func, std::placeholders::_1, std::placeholders::_2, 9);
这时候我们可以调用:
test_bind(1, 2);
就会打印“hello!129”。也就是前两个参数是可以指定的了。(第三个参数不可以)。
其中 std::placeholders::_1 是占位符,我试了试好像能到 _20 (这。。)
在我看来,std::bind这个东西用在写事件回调中很好用~~~
相关文章推荐
- [C++ 11札记]: std::bind
- C++ 11 笔记 (五) : std::thread
- C++ 11 std::function std::bind使用
- C++ 11 std::function std::bind使用
- c++ 11学习笔记--Lambda 表达式(对比测试Lambda ,bind,Function Object)
- C++ 11 std::function std::bind使用
- c++自定义消息管理机制升级版(std::bind && std::function)
- 【学习笔记】C++primer plus 10. 11. 12. 对象
- C++学习笔记-----输出数据的另一种写法(std::copy)
- C++ 11 笔记 (二) : for循环
- 【菜鸟C++学习笔记】11.内联函数与const成员函数
- 《C++ Concurrency in Action》笔记23 std::atomic<bool>
- 【原】C++ 11右值引用 std::move的作用
- C++ 11 学习笔记(不断更新)
- c++中std namespace和socket的bind的冲突
- C++中std::tr1::function和bind 组件的使用
- C++ 11 右值引用以及std::move
- c++ std::bind用法小结。
- C++ 11新特性笔记-1: 保证稳定性和兼容性
- C++11 笔记 std::function,bind绑定器和lambda