注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

widebright的个人空间

// 编程和生活

 
 
 

日志

 
 

boost::function 和 boost::bind相关资料  

2012-03-21 00:30:32|  分类: 程序设计 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

        因为前面的bind的复制对象问题,突然想到这个boost::function 是不是可以用来存放所有 boost::bind 返回的各个各样符合返回类型和参数的函数对象的。就找了一下资料看看,结果发现boost::function应该是兼容各种函数对象类型的转换的啊,人家专门就是为了解决这个问题的。好像我一开始也写过一个简单的例子测试过的了,现在怎么又忘记了。

    class  A{

             void print(int a) {

             }

     };

      class  B{

             void print(int b) {

             }

     };

   boost::function (void , int) f;

A a;

B b;

f = boost::bind( &A::print ,&a,_1);

f = boost::bind( &B::print ,&b,_1);

上面两句赋值应该最后都能正常工作,会调用 不同类的a和b对象工作。

看下面文章的解释,说是他function里面会用动态申请空间,用一个指针把这个bind返回的不同类型的函数对象保存起来了。

 

      boost:::function 和 boost::bind 都是 c++ “函数对象”的衍生物,所有为了理解这个两个东西,最好先看一下 c++ “函数对象”方面的资料。然后下面这几篇文章都写的不错。

 

1、boost.bind 如何 bind    http://www.builder.com.cn/2008/0319/775983.shtml

2、boost::function用法详解  http://blog.csdn.net/benny5609/article/details/2324474

3、 boost::function 和 boost::bind 的工作原理 http://www.cnblogs.com/edwardlost/archive/2011/03/24/1993889.html

4、 how boost::function and boost::bind work http://stackoverflow.com/questions/527413/how-boostfunction-and-boostbind-work

 5、Chapter 9. Boost.Function  http://www.boost.org/doc/libs/1_49_0/doc/html/function.html

  评论这张
 
阅读(663)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017