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

还东国的博客

行之苟有恒,久久自芬芳

 
 
 

日志

 
 

C++11及BOOST特性之二十std::function的绑定的方法  

2014-12-19 09:59:32|  分类: C++(VC)编程 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

C++11BOOST特性之二十std::function的绑定的方法

前面在“C++11BOOST特性之十二对std::function模板类的一些认识”和“C++11BOOST特性之十一对std::bind()函数的一些认识”初步的说明了一下两者的用法,但在实际应用中也发现了对std::function中的使用的方法不同情形,这里再总结一下,以供日后备查。

1、  直接将函数指针赋值。

2、  仿函数

3、  Std::bind

4、  Lambda表达式

 

举例:

声明:

#include <functional>

std::function<void(const int&)> myFun;

 

函数指针赋值(类的静态函数与其一致)

void SetFun(const int&flag)

{

       ……

}

myFun = SetFun;

 

仿函数:

Class  SetFunc 

public: 

    void operator()(const int&flag ) { ... } 

}; 

SetFunc sf;

myFun = sf;

myFun();

 

std::bind方法:

class Bind

{

 public:

  void Test(const int& );

};

Bind b;

myFun = boost::bind(&Bind::Test, &b);

myFun(); // 调用 b.Test(const int&);

 

Lambda表达式方法:

myFun = [](const int &flag)

{

    ….;

};

最后再多说一句,这个std::fuction std::bind一起使用时,是可以支持多态的,这个从其源码处就可以看出来。

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

历史上的今天

在LOFTER的更多文章

评论

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

页脚

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