C++ TR1 Function Bind

在C++ 11出现以前,C++的事件一般是通过回调形试来实现,如 void (*func)(int,int,int),其实际上是一种函数指针,在C中调用时是直接写函数名在参数列表中,而在C++中,大部份的回调需要定义成 static。也就是静态函数。通过::作用域符,方式调用。

当然在C++TR11出现前,更早的function 与Bind 在开源库中boost 中就有,而C++11 tr1也就是借鉴了或者直接使用了boost库中的相关模板。

现在就来说说C++ tr1 中的Function 模板 比如 typedef std::tr1::function<long(const char*,unsigned int)>MSGEvent; 这个function 实际上就是以前的回调函数的定义,只是用了function模板后,你就可以像对象一样操作,也为后面的bind提供方便。

C++ tr1 bind 和boost的bind一样,形式为bind(Function fn, T1 t1, T2 t2, …, TN tN); 前名是函数名,后面是参数。bind的好处在与你的联接可以是全局函数,或者静态函数,或者是类的成员函数,而不像以前的回调,只能用静态函数。

网上很多例子,可以看看 http://www.cnblogs.com/satng/archive/2011/04/29/2138804.html

C++ TR1 Function Bind

时间: 2024-10-24 13:15:36

C++ TR1 Function Bind的相关文章

std::tr1::function和bind组件

C++中std::tr1::function和bind 组件的使用 在C++的TR1中(Technology Report)中包含一个function模板类和bind模板函数,使用它们可以实现类似函数指针的功能,但却却比函数指针更加灵活,特别是函数指向类的非静态成员函数时.可以参考Scott Meyers. <<Effective C++ (3rd Edition)>>. Item 35.下面具体说明其使用方法. 一.指向全局函数或静态成员函数时 因为在本质上讲全局函数和静态成员函

std::tr1::function std::tr1::bind

在C++的TR1中(Technology Report)中包含一个function模板类和bind模板函数,使用它们可以实现类似函数指针的功能,但却却比函数指针更加灵活,特别是函数指向类 的非静态成员函数时.可以参考Scott Meyers. <<Effective C++ (3rd Edition)>>. Item 35.下面具体说明其使用方法. 一.指向全局函数或静态成员函数时 因为在本质上讲全局函数和静态成员函数没有区 别,使用方法上除了静态成员函数在引用时要在前面加域作用符

C++ std::tr1::function使用

1. 介绍 function 是一种通用.多态的函数封装.std::function 的实例可以对任何可以调用的 目标 进行存储.复制.和调用操作,这些目标包括函数.lambda 表达式.绑定表达式.以及其它函数对象等.(c++11起的版本可用) function(和bind一样)可以实现类似函数指针的功能,却比函数指针更加灵活(体现在占位符上面),尤其是在很多成员调用同一个函数(仅仅是参数类型不同)的时候比较方便. 特点: 可以作为函数和成员函数. 可做回调函数,取代函数指针. 可作为函数的参

C++之TR1::function

Tr1::function的介绍 它是一个类模板,类的成员变量是一个函数指针.可以把它看作一个智能函数指针(和shared_ptr智能指针对比着理解). 一. 头文件 #include<functional> 二. 使用 //t.cpp #include "stdafx.h" #include<iostream> #include<functional> using namespace std; void foo(int i){cout<<

【转帖】漫话C++0x(四) —- function, bind和lambda

实在是觉得此文总是去翻感觉不太好.于是果断转过来了,想看原文的请戳:http://www.wuzesheng.com/?p=2032 本文是C++0x系列的第四篇,主要是内容是C++0x中新增的lambda表达式, function对象和bind机制.之所以把这三块放在一起讲,是因为这三块之间有着非常密切的关系,通过对比学习,加深对这部分内容的理解.在开始之间,首先要讲一个概念,closure(闭包),这个概念是理解lambda的基础.下面我们来看看wikipedia上对于计算机领域的closu

function/bind 函数适配器

1.function/bind简介 function是一种类模板,重载了operator()函数调用操作符,所以每一个function类的对象都是一个函数对象. bind是一种函数适配器,可以改变参数的个数.顺序. 2.相关代码 1 #include <iostream> 2 #include <string> 3 #include <vector> 4 #include <functional> 5 using namespace std; 6 7 voi

Extjs使用Ext.function.bind, 给句柄函数传参

回调函数updateImage中的key参数,在外部调用时有程序员自己指定. 使用Ext.Function.bind(this.updateImage, this, 'imageUrl', true) 参数一:updateImage函数引用, 参数二:this(固定写法) 参数三:程序员自定义updateImage函数引用中的key参数值 参数四:true (固定写法) showSelectImageWindow: function() { var me = this.getView(); th

C++ function/bind

function/bind 1. std::function i.  是一个函数的包装器 ii. std::function<R(T1, T2, ..., TN)> iii. 这是一个模板实现的函数对象类,它可以包装其它任意的函数对象,而被包装的函数对象具有类型为T1,T2,…,TN的参数,其返回值为R类型 iv. function 对象的最大用处在于实现函数回调 2. bind i.   bind是这样一种机制,它可以预先把指定可调用实体的某些参数绑定到已有的变量,产生一个新的可调用实体(可

javascript 中 function bind()

Function bind() and currying <%-- All JavaScript functions have a method called bind that binds to an object and returns a new function. The first argument to bind sets the this context of the function. function area (height) { return this.width * he