boost bind及function的简单实现】的更多相关文章

前面在做 http server 的时候,需要做一个回调的接口,要求能够绑定类的函数以及普通的函数到这个回调里,对于这种应用要求,选择 boost 的 bind 和 function 是最合适不过了,但现在情况有些不同,我不准备在现在做的这个东西里加入 boost, 本着以造轮子为乐的精神,现在只能捋起袖子自己来搞一个. 大概原型 使用的时候一直没有太留意它们的实现,现在要做起来,发现也不是想像中那么轻而易举.这个东西做到最后要实现的效果就是设计一个泛型的 function holder,这个…
目录(?)[+] 1 bind/function 引 (1)头文件 bind函数#include <boost/bind.hpp> function使用头文件#include <boost/function.hpp> 如果写程序时出错则在function及bind前面加上限定:"boost::" (2)功能 bind绑定一个函数及其参数. function是类和模板的组合,它定义的对象可以指向一个函数(包装一个函数 ),类似一个函数指针.既可以直接指向一个函数也…
前两年开始接触boost,boost库真是博大精深:今天简单介绍一下boost中之前用到的的bind与function,感觉挺实用的,分享给大家,我对boost用的也不多,让大家见笑了. 上次文发了一个基于类成员函数指针实现的一个消息处理框架,这次用boost的function实现,比那个要简单灵活很多: 今天介绍的这个示例代码,算是一个消息处理框架吧,用于说函数对象function与bind的基本用法: 首先介绍一下function与函数指针的区别: 函数指针:只能指向静态函数,如果要指向类的…
这是一篇介绍bind和function用法的文章,起因是近来读陈硕的文章,提到用bind和function替代继承,于是就熟悉了下bind和function的用法,都是一些网上都有的知识,记录一下,期冀对他人也有用处. 注:本文暂时不探索bind和function的实现和开销. 1. bind 是什么 boost::bind 是std::bindlist 和 std::bind2nd的结合体.它提供一个任意的函数对象(仿函数).函数.函数指针.成员函数指针. 它可以绑定任意的参数.bind 没有…
boost::function和boost::bind结合使用是非常强大的,他可以将成员函数和非成员函数绑定对一个对象上,实现了类似C#的委托机制.委托在许多时候可以替代C++里面的继承,实现对象解耦,简单说就是把产生事件的代码和处理事件的代码通过委托者给隔离开来. 但是boost库是非常庞大的,尤其是在发布开源软件时,下载安装boost是一件让用户望而却步的事情.基于此,下面编程模拟boost::function和boost::bind. 为了满足90%以上的应用场合,该代码实现以下目标: 1…
前言 在上一篇blog中简单的实现了boost::function,支持带有2个参数的函数/函数指针,函数对象,函数适配器/bind类,以及带有1个参数的成员函数指针. 本文接着来介绍如何实现一个简单的boost::bind. 基本目标如下: 支持接收0个参数的函数/函数指针,函数对象. 支持接收1个参数的函数/函数指针,函数对象. 支持接收2个参数的函数/函数指针,函数对象. 实现 首先,解决占位符的问题: namespace { struct Placeholders1 { } _1; st…
前言 boost::function和boost:bind是一对强大的利器.相信用过的童鞋多少有些体会. 虽然平时在用boost::function,但是用的时候心中总会一些不安,因为不知道它是怎么实现的.于是,就自己琢磨着简单的实现一下,搞明白基本的原理. 对于这个简单实现,有以下几个目标: 选取比较常见的接收2个参数的情况. 支持普通函数/函数指针.成员函数指针. 兼容函数对象.函数适配器/boost::bind. 实现 首先,定义一个基类: template<typename R, typ…
前言 最近任务多.工期紧,没有时间更新博客,就水一期吧.虽然是水,也不能太失水准,刚好最近工作中遇到一个 boost::bind 的问题,花费了半天时间来定位解决,就说说它吧. 问题背景 项目中使用了 boost 的 ios_service,任务都是 post 到对应线程去执行,这样可以避免复杂的多线程同步问题,有点类似早年间 COM 的单线程套间模型.不过这就需要将接口通过 bind 封装为函数对象传递给 ios_service,之前的代码都工作正常,但我新增了一个接口后,却怎么也编译不过,报…
转自:http://blog.csdn.net/Solstice/archive/2008/10/13/3066268.aspx 这是一篇比较情绪化的blog,中心思想是“继承就像一条贼船,上去就下不来了”,而借助boost::function和boost::bind,大多数情况下,你都不用上贼船. boost::function和boost::bind已经纳入了std::tr1,这或许是C++0x最值得期待的功能,它将彻底改变C++库的设计方式,以及应用程序的编写方式. Scott Meyer…
最近开始写一个线程池,期间想用一个通用的函数模板来使得各个线程执行不同的任务,找到了Boost库中的function函数. Boost::function是一个函数包装器,也即一个函数模板,可以用来代替拥有相同返回类型,相同参数类型,以及相同参数个数的各个不同的函数. #include<boost/function.hpp> #include<iostream> typedef boost::function<int(int ,char)> Func; int test…