概念,取自Stack Overflow大神的叙述(个人感觉比较好理解)
再来看看来自Stack Overflow某位大神简洁明了的表述:A "callback" is any function that is called by another function which takes the first function as a parameter。 也就是说,函数 F1 调用函数 F2 的时候,函数 F1 通过参数给 函数 F2 传递了另外一个函数 F3 的指针,在函数 F2 执行的过程中,函数F2 调用了函数 F3,这个动作就叫做回调(Callback),而先被当做指针传入、后面又被回调的函数 F3 就是回调函数。到此应该明白回调函数的定义了吧?
1.先是F1的定义
void F1(void(*F2)())
{
F2();
cout << "我是F1"<<endl;
}
void F3()
{
cout << "我是F3"<<endl;
return;
}
int main()
{
F1(F3);
}
需要注意的是F3和F2是一致的(返回值和形参)
2.我们加入参数
如若其内存格式不一致,那么将会报错
正确的方法是:
void F1(int y,void(*F2)(int))
{
cout << "我是调用函数F1:"<<endl;
F2(y);
}
void F3(int i)
{
cout << "我是回调函数F3,输入的值为:"<<i<<endl;
return;
}
int main()
{
int i;
cout << "输入值:"<<endl;
cin >> i;
F1(i,F3);
}
3.我们还可以对F2进行单独格式的声明,以应对复杂的方法结构:
//回调函数的定义
typedef void F2(int i, string kk);
//回调函数的注册
void F1(int y,string ooo, F2 fff)
{
cout << "我是调用函数F1:"<<endl;
fff(y, ooo);
}
void F3(int i,string mm)
{
cout << "我是回调函数F3,输入的值为:"<<i<<endl;
cout << "函数名称:" << mm.c_str();
return;
}
int main()
{
int i;
string kk = "老子天下第一";
cout << "输入值:"<<endl;
cin >> i;
F1(i, kk,F3);
}