c++回调函数

回调函数本质上也是普通函数,只是调用机制有所区别——首先通过传参的形式将该函数的地址传递给其他函数,然后在其他函数中通过函数指针调用该函数。在其他函数中通过函数指针调用该函数的过程称为回调而作为被调用的该函数则被称为回调函数

为什么需要回调函数?

满足接口兼容性

回调函数必须通过函数指针进行传递和调用,为了简化代码,一般会将函数指针起个别名,格式为:

typedef 返回值类型 (*指针名) (参数列表)

回调函数规避了必须在调用函数前声明的弊端,而且能够让用户直观地感受到自己定义的函数被调用。

 

需注意,普通c语言风格函数和类静态成员函数可以直接作为回调函数使用,而如果要将类非静态成员函数作为回调函数,需要将其进行封装,如

std::function<void(int)> cb = std::bind(&ClassX::func, this, placeholders::_1);

因为类非静态成员函数存在默认参数this指针,若直接去使用会使得参数类型不匹配。

 

转载文章:https://blog.csdn.net/qq_45311905/article/details/116504377

posted @ 2023-05-01 18:19  _Explosion!  阅读(62)  评论(0编辑  收藏  举报