原文地址:http://hi.baidu.com/hpagent/blog/item/471b7d92dc8ac39ca977a4dc.html

测试一下,看看例子

#include <iostream>
#include <string>
#include "boost/bind.hpp"
using namespace std;
class tracer {
public:  
 tracer() 
    {    std::cout << "tracer::tracer()\n";  }  
 tracer(const tracer& other)
 {    std::cout << "tracer::tracer(const tracer& other)\n";  }
 tracer& operator=(const tracer& other)
 {    std::cout <<      "tracer& tracer::operator=(const tracer& other)\n";  
 return *this; 
 } 
 ~tracer() 
 {    std::cout << "tracer::~tracer()\n";  }  
 void print(const std::string& s) const
 {    std::cout << s << '\n';  }
};
int main(void)
{
 {

tracer t;
  // boost::bind(&tracer::print,t,_1)(string("this is a test"));//这样是用的拷贝构造函数,而且发生了很多次,很消耗资源,1
  // boost::bind(&tracer::print,boost::ref(t),_1)(string("this is a second test"));//这里没有发生,全是引用,2

boost::bind(&tracer::print,&t,_1)(string("this is a second test")); 3
 }
   system("PAUSE");
}

首先运行第一个绑定器,结果非常不满意:


这么多拷贝,很是浪费资源,于是乎,我们可以利用后面两个绑定器,来看看结果:


这样看起来是不是很节省资源呢?

最后两条结果是一样的,但是第一个是引用,第二个是利用的指针,不要混淆了!!!!!!!!!!!!!!!!!!!!!!

转载于:https://www.cnblogs.com/wangkangluo1/archive/2011/08/06/2129626.html

boost::bind时候注意性能问题相关推荐

  1. c++ Boost库之boost::bind学习

    刚开始学c++,就看boost库其实有点小小的不情愿. 团队要求必掌握的Boost库: boost::bind boost::function boost::Signals2 学习前奏:在写关于coc ...

  2. boost::bind 介绍

    boost::bind 介绍 这篇文章介绍boost::bind()的用法, 文章的主要内容是参考boost的文档. 1. 目的 boost::bind 是std::bindlist 和 std::b ...

  3. boost bind使用指南

    bind - boost 头文件: boost/bind.hpp bind 是一组重载的函数模板. 用来向一个函数(或函数对象)绑定某些参数. bind的返回值是一个函数对象. 它的源文件太长了. 看 ...

  4. 展示使用 boost bind 和 phoenix 处理删除的不同方法的测试程序

    展示使用 boost bind 和 phoenix 处理删除的不同方法的测试程序 实现功能 C++实现代码 实现功能 展示使用 boost bind 和 phoenix 处理删除的不同方法的测试程序 ...

  5. Boost:boost :: bind相等运算符的测试程序

    Boost:boost :: bind相等运算符的测试程序 实现功能 C++实现代码 实现功能 boost :: bind相等运算符的测试程序 C++实现代码 #include <boost/c ...

  6. 【Boost】以boost::function和boost:bind取代虚函数

    这是一篇比较情绪化的blog,中心思想是"继承就像一条贼船,上去就下不来了",而借助boost::function和boost::bind,大多数情况下,你都不用上贼船. boos ...

  7. boost::function和boost:bind取代虚函数

    这是一篇比较情绪化的blog,中心思想是"继承就像一条贼船,上去就下不来了",而借助boost::function和boost::bind,大多数情况下,你都不用上贼船. boos ...

  8. Please use boost/bind/bind.hpp + using namespace boost::placeholders

    The practice of declaring the Bind placeholders (_1, _2, -) in the global namespace is deprecated. P ...

  9. ROS下的多参数调用,boost::bind使用

    主要是当我们订阅一个消息时候,会调用一个返回函数. 例如: 1 ros::Subscriber scan_sub=n.subscribe<std_msgs::Int8>("/te ...

最新文章

  1. js中常用的对象—String的属性和方法
  2. 在Windows上编译UEFI SDK 2018/OVMF的方法
  3. MPO文件类型解码(二)了解JPEG文件格式
  4. Everything排除某个目录、隐藏文件、系统文件
  5. java后台环境搭建_后端-java环境搭建
  6. 以后可能用到的一些OQL
  7. oracle数据分布不均,oracle性能优化操作七:索引提高数据分布不均匀时查询效率...
  8. 开源程序识别图像像素点_开源浏览器扩展程序,可放大图像
  9. ROS学习笔记12(用Python写一个简单的消息发布和消息订阅)
  10. 理解SNS系列之二:更进一步,近观SNS
  11. 二维码生成易语言代码
  12. CAN通讯程序C语言,基于单片机的CANBUS程序(C语言)
  13. python 列表去重
  14. rpm的mysql怎么安装_MySQL的rpm安装教程
  15. ubuntu 18.04 两张GPU显卡,nvidia-smi只显示一张
  16. 『UVA 437』巴比伦塔
  17. 架构师之路---面向过程和面向对象 王泽宾
  18. Android UI 之实现多级列表TreeView
  19. 关于前端video标签视频无法拖动进度条快进问题(Django)
  20. tplink打印机服务器重置,TP-Link无线路由器打印机设置指南

热门文章

  1. 对于《软件工程》课程的认识
  2. ADO.Net知识总结
  3. elastic-job 的简单使用
  4. Exception in thread main java.lang.NullPointerException
  5. Feature Extractor[DenseNet]
  6. 《深入浅出iPhone/iPad开发(第2版)》——组件可以触发特定事件
  7. 【原创】packetbeat 之“request-response 错误关联”问题
  8. verilog中级别到底是什么?级别的分类是什么???
  9. 自己的数字选择控件NumberPicker
  10. 打通NTFS权限 文件共享各取所需