战魂之海临天空,时空逆转之六岁的大老爷们,耒阳市
1.概述
function是c++11中对于函数,函数指针,函数对象,lambda表达式等可调用函数的汇总,bind函数将一个普通函数或者成员函数转化为可给function对象赋值的对象,使用这两个函数可以实现c++通用意义上的回调和委托机制.
2.bind 函数返回的函数对象赋值给function对象时的要求是,返回值一定要相同,参数类型需要相同,参数个数需要小于等于function函数对象的参数个数.
#include #include #include using namespace std; class foo{ public: typedef function callback; void methoda(){ cout<<"foo methoda"<
此时编译通过,但此时bind返回的函数其实是一个不需要参数的函数对象,因此说明只能允许参数个数少的函数对象可以赋值给参数个数较多的函数对象,前提是参数类型都匹配.
至于为什么这样设计,将参数少的绑定到参数多的函数中,那么在回调该函数的时候,只需要将不需要的参数丢掉,即可. 如果相反的话,那么会因为需要的参数不够而不能够回调..
应该是这么回事.
结论是参数少的可以绑定到参数多的上面.
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
如何在没有core文件的情况下用dmesg+addr2line定位段错误
用QT制作3D点云显示器——QtDataVisualization
网友评论