hangingfan / Technical-Blog

-----------------个人博客-----------------
1 stars 0 forks source link

回调函数--C++ #5

Open hangingfan opened 6 years ago

hangingfan commented 6 years ago

由于C#的委托,我又想起了熟悉的回调函数,于是决定写一篇回调函数的定义 1:函数指针: auto pFunc = &Function; 类似于普通的指针,没有任何区别。然后auto只是自动获取,类似于C#的var, 如果变成真实的类型,就是这样: 返回类型(*pFunc)(参数列表) 具体如下面的例子

int FunctionA(int min, int max)
{
    std::cout<< "min:" << min << " max: " << max<<"\n";
    return 0;
}

int main()
{
    int(*pFunc)(int, int);   //函数指针的格式, int--返回类型,  pFun--名称,  后面的2个int是参数
    pFunc = &FunctionA;
    pFunc(4, 1);

    auto pFuncA = &FunctionA;
    pFuncA(4, 1);

    system("pause");
    return 0;
}

2: 回调函数 在项目框架里, A模块调用B模块的API,A调用这个API之后,立即就去干其他的事情了,没有等待,需要B处理完之后才去通知A,这个时候,我们需要让B设置一个函数指针,让A传进来,B就可以在处理完之后进行调用,通知A了

int FunctionA(int min, int max)
{
    std::cout << "min:" << min << " max: " << max << "\n";
    return 0;
}

//B模块,第一个参数是回调函数
void TestFuncA(int(*funInside)(int, int), int insideMin, int insideMax)
{
    funInside(insideMin, insideMax);
}

int main()
{
    TestFuncA(FunctionA, 0, 10);//main相当于A模块,调用B的API之后,funInside就相当于通知A

    system("pause");
    return 0;
}