boost.bind顾名思义就是用来将函数按照特定的接口规范将已经有的但是接口不一致的函数转化成规定的接口的一种Adaptor技术,是Adaptor模式的一种具体实现.我最早是在STD当中看到的 。
int
f(
string
str1,
string
str2)
{
cout << " f( " + str1 + " , " + str2 + " ) " << endl;
return 0 ;
}
{
cout << " f( " + str1 + " , " + str2 + " ) " << endl;
return 0 ;
}
使用boost.bind可以将f函数转化成为你想要的重载的三个函数
1.使用boost::bind(f,_1,str1)(str2)就相当于调用了函数f(str2,str1)
2.使用boost::bind(f,str1,_2)(str2)就相当于调用了函数f(str1,str2)
3.使用boost::bind(f,_1,_2)(str1,str2)就相当于调用了函数f(str1,str2)
其中的_1,_2只是占位符(placeholder)
boost::bind按照某种规则放入到队列当中可以轻轻松松写出一个包含消息循环的回调框架出来.
具体讨论参见我的帖子:
http://community.csdn.net/Expert/topic/5250/5250583.xml?temp=.1349604
欢迎大家讨论。