测试一下,看看例子
#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");
}
首先运行第一个绑定器,结果非常不满意:
这么多拷贝,很是浪费资源,于是乎,我们可以利用后面两个绑定器,来看看结果:
这样看起来是不是很节省资源呢?
最后两条结果是一样的,但是第一个是引用,第二个是利用的指针,不要混淆了!!!!!!!!!!!!!!!!!!!!!!