回调函数是实现多态的一种方法,通过函数指针传入不同的函数实现,达到相同接口,不同函数功能的效果。
回调函数主要包括三个部分:
> 函数指针声明;
> 回调函数调用接口实现;
> 回调函数的实现。
以排序为例:
函数指针类型声明:
typedef bool (*CallBack)(double param1, double param2); // 声明时确定函数返回值类型和参数类型
回调函数接口实现:
void MySort(double* arr, size_t arr_sz, CallBack compare) {
if (arr_sz < 2)
return;
for (int i = 0; i < arr_sz - 1; i++) {
for (int j = i + 1; j < arr_sz; j++) {
if (compare(arr[i], arr[j])) {
// 交换 元素i,j
double tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}
}
}
回调函数实施例:
bool Less(double val1, double val2) {
return val1 < val2;
}
bool Greater(double val1, double val