当前位置: 首页 > news >正文

邯郸网站建设信息官网平台交易

邯郸网站建设信息,官网平台交易,wordpress 自适应菜单,wordpress房产插件boost::function的用法 本片文章主要介绍boost::function的用法。 boost::function 就是一个函数的包装器(function wrapper)#xff0c;用来定义函数对象。 1. 介绍 Boost.Function 库包含了一个类族的函数对象的包装。它的概念很像广义上的回调函数。其有着和函数指针相同的… boost::function的用法 本片文章主要介绍boost::function的用法。 boost::function 就是一个函数的包装器(function wrapper)用来定义函数对象。 1.  介绍     Boost.Function 库包含了一个类族的函数对象的包装。它的概念很像广义上的回调函数。其有着和函数指针相同的特性但是又包含了一个调用的接口。一个函数指针能够在能以地方被调用或者作为一个回调函数。boost.function能够代替函数指针并提供更大的灵活性。 2. 使用     Boost.Function 有两种形式首选形式和便携式形式 其语法如下 首选形式 便携式形式 boost::functionfloat(int x, int y)f boost::function2float, int, intf 但是便携式形式不是所有的编译器都支持的 所以这里我只介绍首选形式。 2.1 普通函数     我们可以看下如下的例子 1 void do_sum(int *values, int n) 2 2 { 3 3 int sum(0);4 4 for (int i 0; i n; i) 5 5 { 6 6 sum values[i]; 7 7 } 8 8 cout sum endl; 9 9 }; 10 10 int _tmain(int argc, _TCHAR* argv[]) 11 11 { 12 12 boost::functionvoid(int *values, int n) sum; 13 13 sum do_sum; 14 14 int a[] {1,2,3,4,5}; 15 15 sum(a, 5); 16 16 return 0; 17 17 }       sum 可以理解为一个广义的函数对象了其只用就是保存函数do_sum 然后再调用之。 2.2 成员函数     在很多系统中 对于类的成员函数的回调需要做特殊处理的。这个特殊的处理就是“参数绑定”。当然这个超出了我们讨论的范围了。 boost::function对于成员函数的使用可以看下如下代码 1 class X{ 2 2 public: 3 3 int foo(int a) 4 4 { 5 5 cout a endl; 6 6 return a; 7 7 } 8 8 };9 9 int _tmain(int argc, _TCHAR* argv[]) 10 10 { 11 11 boost::functionint(X*, int)f; 12 12 f X::foo; 13 13 X x; 14 14 f(x, 5); 15 15 return 0; 16 16 }         我们发现 对类的成员函数的对象化从语法是没有多大的区别。 3. 一个典型的例子     上面的几个例子没有体现出boost::function的作用来 这里在写一个例子。比如当程序执行到某一处的时候想绑定某一个函数 但是不想立即执行 我们就可以声明一个函数对象给此对象绑定相应的函数 做一些其他事情然后再来执行绑定的函数 代码如下 1 void print(int a) 2 2 { 3 3 cout a endl; 4 4 }5 5 typedef boost::functionvoid (int) SuccessPrint;6 6 int _tmain(int argc, _TCHAR* argv[]) 7 7 { 8 8 vectorSuccessPrint printList;9 9 SuccessPrint printOne boost::bind(print, _1); 10 10 printList.push_back(printOne); 11 11 SuccessPrint printTwo boost::bind(print, _1); 12 12 printList.push_back(printTwo); 13 13 SuccessPrint printThree boost::bind(print, _1); 14 14 printList.push_back(printTwo); 15 15 // do something else 16 16 for (int i 0; i printList.size(); i) 17 17 printList.at(i)(i); 18 18 return 0; 19 19 }        上述代码中首先把声明一个函数对象 typedef boost::functionvoid (int) SuccessPrint 然后把print绑定到斥对象中 放入vector中 到最后才来执行这print()函数。
http://wiki.neutronadmin.com/news/162328/

相关文章:

  • 社交营销可以用于网站制作行业吗wordpress 文档 插件
  • 某网站注册需要邮箱是怎么弄以美食为主的网站栏目怎么做
  • changer网站建设站长工具seo综合查询是什么
  • 西安市住房和城乡建设局官方网站手机网站关键
  • 绍兴兴住房和城乡建设局网站工程模板多少钱一张
  • wordpress如何导航网站模板雅虎网站提交入口
  • 自己做网站需要哪些流程成都网络营销策划
  • 公司开发网站建设北京新增死亡病例详情
  • 郑州做网站服务器应遵循哪些原则
  • 高端电商网站开发跨境电商登录入口
  • 网站建设怎么说服客户英文网站建设设计
  • 建设网站方案 ppt微信小程序怎么做购物网站
  • 网站seo优化皆宣徐州百都网络不错做外包网站搭建
  • 济南网站建设公司推荐手机网站和电脑网站的区别
  • 石家庄企业建站系统上海市网站seo公司
  • 在线视频播放网站建设广告传媒公司业务
  • 许昌建网站陕西省住房建设厅官网
  • 网站外链软件邳州网站设计价格
  • 素材网站推广方案网站自然排名怎么优化
  • 创建官方网站陵川网站建设
  • 广州网站建设索王道下拉网站的关键词排名
  • 柳州商城网站开发91助手
  • 模板的网站都有哪些wordpress某个分类不在首页显示
  • 珠海做网站需要多少钱织梦体育网站模板
  • 体育类网站 设计WordPress反爬虫教程
  • 广西网站开发重庆绝美的十大冷门景点
  • 好用心 做网站送女友阿克苏网站建设
  • 重庆最大的本地交流网站制作销售网站有哪些问题
  • 响应式网站布局实例搜索引擎优化百度百科
  • 小说网站首页模板seo优化专家