189 8069 5689

怎么使用C++bind函数

本篇内容主要讲解“怎么使用C++ bind函数”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用C++ bind函数”吧!

目前创新互联建站已为上千的企业提供了网站建设、域名、网站空间网站托管运营、企业网站设计、襄城网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

1.使用由来

我们看到我使用的代码是boost :: bind,而大家在网上看到的大部分介绍是标准函数std :: bind,其实boost ::  bind是标准函数std :: bind1st和std ::  bind2nd的泛化。它支持任意函数对象,函数,函数指针和成员函数指针,并且能够将任何参数绑定到特定值或将输入参数路由到任意位置。bind对函数对象没有任何要求;  特别地,它不需要result_type,first_argument_type和second_argument_type标准typedef。

2.使用介绍

通常我们可以将bind函数看作一个通用的函数适配器,它接受一个可调用对象,生成一个新的可调用对象来“适应”原对象的参数列表。bind可以根据当前已有的可调用对象,构造出一个新的可调用对象,有了bind,我们可以实现“动态生成新的函数”的功能。简而言之,就是可以通过bind函数修改原函数并生成一个可以被调用的对象,类似于函数的重载,但是我们又不需要去重新写一个函数,用bind函数就可以实现。

接下来我们看看bind函数是如何使用的呢?

绑定一个普通函数和函数指针:

int fun(int a, int b,int c,int d,int e) {     return a + b - c + d - e; }  int main() {   int x=1,y=2,z=3;   auto g =bind(fun,x,y,_2,z,_1); }

这样的g 是一个有两个参数的可调用对象,它的两个参数分别用占位符_2  和_1表示。这个新的可调用对象将它自己的参数作为第三个和第五个传递给fun,fun函数的第一个、第二个第四个参数分别被绑定到给定的值x、y、z上。

绑定一个成员函数:

bind最常用的功能之一,是由类成员函数构造bind对象;想想看,如何由类成员函数(非static成员函数)构造回调函数?答案是很难,而通过bind,却可以很容易做到。

class Speaker { public     Speaker();     ~Speaker()     {         speaker_play_routine_->join();     }     void playRoutine()     {     } private     boost::thread* speaker_play_routine_{nullptr}; }; int main() {    speaker_play_routine_ = new boost::thread(boost::bind(&Speaker::playRoutine, this));  }

这里类的成员函数必须通过类的对象或者指针调用,因此在绑定时,bind要拿出第一个参数的位置来指定一个类的实例、指针或者引用。

注意:必须在成员函数前面加上取地址的操作符&。

到此,相信大家对“怎么使用C++ bind函数”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


当前标题:怎么使用C++bind函数
本文链接:http://jkwzsj.com/article/jhhieo.html

其他资讯