C++ 11 笔记 (四) : std::bind
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是传给func函数的参数。看这恶心的声明,简直比上一篇博客举得例子还要恶心,所以auto又大显身手了:
auto test_bind = std::bind(func, , , );
短了好多好多啊。。。
这时候我们调用:
test_bind();
就会打印“hello!789”了。
然后再说一下占位符,我们把test_bind改成这样:
auto test_bind = std::bind(func, std::placeholders::_1, std::placeholders::_2, );
这时候我们可以调用:
test_bind(, );
就会打印“hello!129”。也就是前两个参数是可以指定的了。(第三个参数不可以)。
其中 std::placeholders::_1 是占位符,我试了试好像能到 _20 (这。。)
在我看来,std::bind这个东西用在写事件回调中很好用~~~
C++ 11 笔记 (四) : std::bind的更多相关文章
- C++11中的std::bind
C++11中的std::bind 最近在看看cocos2dx的源代码,发现了cocos2dx 3.0相对于2.0改动了很多,最大的改变就是大量的使用了C++11的特性,比如auto等.其中有一个关于回 ...
- C++11学习笔记之三lamda表达式,std::function, std::bind
//lamda //first lamda [] {}; // second lamda []() //or no need () when paramater is null { std::cout ...
- c++11 符号修饰与函数签名、函数指针、匿名函数、仿函数、std::function与std::bind
一.符号修饰与函数签名 1.符号修饰 编译器将c++源代码编译成目标文件时,用函数签名的信息对函数名进行改编,形成修饰名.GCC的C++符号修饰方法如下: 1)所有符号都以_z开头 2)名字空间的名字 ...
- C++11之std::function和std::bind
std::function是可调用对象的包装器,它最重要的功能是实现延时调用: #include "stdafx.h" #include<iostream>// std ...
- C++ 11 笔记 (五) : std::thread
这真是一个巨大的话题.我猜记录完善绝B需要一本书的容量. 所以..我只是略有了解,等以后用的深入了再慢慢补充吧. C++写多线程真是一个痛苦的事情,当初用过C语言的CreateThread,见过boo ...
- [C/C++11]_[初级]_[std::bind介绍和使用]
场景 1.C++11 引入了std::function 对象, 这个对象可以通过std::bind封装所有的函数, 并通过代理调用这个std::function的方式调用这个函数. 比如通过统一的方式 ...
- C++ 11 std::function std::bind使用
cocos new 出新的项目之后,仔细阅读代码,才发现了一句3.0区别于2.0的代码: auto closeItem = MenuItemImage::create( "CloseNorm ...
- c++11特性与cocos2d-x 3.0之std::bind与std::function
昨天同事让帮忙写一小功能,才发现cocos2d-x 3.0 和 cocos2d-x 3.0rc0 差别还是相当大的. 发现Label这一个控件,3.0就比rc0版本多了一个创建函数,更为关键的是3.0 ...
- 转 C++11之std::function和std::bind
std::function是可调用对象的包装器,它最重要的功能是实现延时调用: #include "stdafx.h" #include<iostream>// std ...
随机推荐
- String.Format使用方法
1.作为參数 名称 说明 Format(String, Object) 将指定的 String 中的格式项替换为指定的 Object 实例的值的文本等效项. Format(String, ...
- [Angular 2] Building a Toggle Button Component
This lesson shows you how to build a Toggle Button in Angular 2 from scratch. It covers using transc ...
- shared_ptr与weak_ptr的例子
12.20 编写程序,逐行读入一个输入文件,将内容存入一个StrBlob中,用一个StrBlobPtr打印出StrBlob的每个元素. StrBlob.h #ifndef STRBLOB_H #def ...
- iOS开发中常用到的加密方式
1 base64 1.1 简介 Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码.它将需要编码的数据拆分成字节数组.以3个字节为一组.按顺序排列24位数据,再把这24位数据 ...
- linux学习记录(第六章、Linux 的文件权限与目录配置)
书看的是鸟哥的私房菜,系统用的是centos.被微软坑了N年才发现linux才是王道. 在这里记录些学习的记录.备忘
- NChome如何创建单据跟主子表还有扩展开发要怎么弄?
单据表跟主子表笔记做在笔记本里面 扩展开发在网络备份里面
- MVC小系列(九)【引入namespace】
以前在页面引入一个namespace,可以这样: <%@ Import Namespace="Web.Helpers" %> 如果空间是所有页面都需要的,可以写进配置文 ...
- struts2的单文件下载
一. 导入两个jar包 commons-fileupload-1.3.1.jar commons-io-2.4.jar 二.编写请求上传jsp <h1>文件列表--单文件</h1&g ...
- ReactiveCocoa 入门学习 (一)
引言 现在由于需求的不断发展,MVC这个经典的框架由于Controller的任务越来越多,显得"臃肿"了,网上又推出了新的框架,比如MVVM,ReactiveCocoa, 今天就来 ...
- iOS支付宝集成步骤;王刚韧的技术博客