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的更多相关文章

  1. C++11中的std::bind

    C++11中的std::bind 最近在看看cocos2dx的源代码,发现了cocos2dx 3.0相对于2.0改动了很多,最大的改变就是大量的使用了C++11的特性,比如auto等.其中有一个关于回 ...

  2. C++11学习笔记之三lamda表达式,std::function, std::bind

    //lamda //first lamda [] {}; // second lamda []() //or no need () when paramater is null { std::cout ...

  3. c++11 符号修饰与函数签名、函数指针、匿名函数、仿函数、std::function与std::bind

    一.符号修饰与函数签名 1.符号修饰 编译器将c++源代码编译成目标文件时,用函数签名的信息对函数名进行改编,形成修饰名.GCC的C++符号修饰方法如下: 1)所有符号都以_z开头 2)名字空间的名字 ...

  4. C++11之std::function和std::bind

    std::function是可调用对象的包装器,它最重要的功能是实现延时调用: #include "stdafx.h" #include<iostream>// std ...

  5. C++ 11 笔记 (五) : std::thread

    这真是一个巨大的话题.我猜记录完善绝B需要一本书的容量. 所以..我只是略有了解,等以后用的深入了再慢慢补充吧. C++写多线程真是一个痛苦的事情,当初用过C语言的CreateThread,见过boo ...

  6. [C/C++11]_[初级]_[std::bind介绍和使用]

    场景 1.C++11 引入了std::function 对象, 这个对象可以通过std::bind封装所有的函数, 并通过代理调用这个std::function的方式调用这个函数. 比如通过统一的方式 ...

  7. C++ 11 std::function std::bind使用

    cocos new 出新的项目之后,仔细阅读代码,才发现了一句3.0区别于2.0的代码: auto closeItem = MenuItemImage::create( "CloseNorm ...

  8. c++11特性与cocos2d-x 3.0之std::bind与std::function

    昨天同事让帮忙写一小功能,才发现cocos2d-x 3.0 和 cocos2d-x 3.0rc0 差别还是相当大的. 发现Label这一个控件,3.0就比rc0版本多了一个创建函数,更为关键的是3.0 ...

  9. 转 C++11之std::function和std::bind

    std::function是可调用对象的包装器,它最重要的功能是实现延时调用: #include "stdafx.h" #include<iostream>// std ...

随机推荐

  1. String.Format使用方法

    1.作为參数   名称 说明   Format(String, Object) 将指定的 String 中的格式项替换为指定的 Object 实例的值的文本等效项.   Format(String, ...

  2. [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 ...

  3. shared_ptr与weak_ptr的例子

    12.20 编写程序,逐行读入一个输入文件,将内容存入一个StrBlob中,用一个StrBlobPtr打印出StrBlob的每个元素. StrBlob.h #ifndef STRBLOB_H #def ...

  4. iOS开发中常用到的加密方式

    1 base64 1.1 简介 Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码.它将需要编码的数据拆分成字节数组.以3个字节为一组.按顺序排列24位数据,再把这24位数据 ...

  5. linux学习记录(第六章、Linux 的文件权限与目录配置)

    书看的是鸟哥的私房菜,系统用的是centos.被微软坑了N年才发现linux才是王道. 在这里记录些学习的记录.备忘

  6. NChome如何创建单据跟主子表还有扩展开发要怎么弄?

    单据表跟主子表笔记做在笔记本里面 扩展开发在网络备份里面

  7. MVC小系列(九)【引入namespace】

    以前在页面引入一个namespace,可以这样: <%@ Import Namespace="Web.Helpers" %> 如果空间是所有页面都需要的,可以写进配置文 ...

  8. struts2的单文件下载

    一. 导入两个jar包 commons-fileupload-1.3.1.jar commons-io-2.4.jar 二.编写请求上传jsp <h1>文件列表--单文件</h1&g ...

  9. ReactiveCocoa 入门学习 (一)

    引言 现在由于需求的不断发展,MVC这个经典的框架由于Controller的任务越来越多,显得"臃肿"了,网上又推出了新的框架,比如MVVM,ReactiveCocoa, 今天就来 ...

  10. iOS支付宝集成步骤;王刚韧的技术博客