回调函数本质上也是普通函数,只是调用机制有所区别——首先通过传参的形式将该函数的地址传递给其他函数,然后在其他函数中通过函数指针调用该函数。在其他函数中通过函数指针调用该函数的过程称为回调,而作为被调用的该函数则被称为回调函数。
为什么需要回调函数?
满足接口兼容性
回调函数必须通过函数指针进行传递和调用,为了简化代码,一般会将函数指针起个别名,格式为:
typedef 返回值类型 (*指针名) (参数列表)
回调函数规避了必须在调用函数前声明的弊端,而且能够让用户直观地感受到自己定义的函数被调用。
需注意,普通c语言风格函数和类静态成员函数可以直接作为回调函数使用,而如果要将类非静态成员函数作为回调函数,需要将其进行封装,如
std::function<void(int)> cb = std::bind(&ClassX::func, this, placeholders::_1);
因为类非静态成员函数存在默认参数this指针,若直接去使用会使得参数类型不匹配。
转载文章:https://blog.csdn.net/qq_45311905/article/details/116504377
标签:调用,函数,静态,c++,函数指针,回调 From: https://www.cnblogs.com/Explosion556/p/17366816.html