C++中新函数认识---拓展延伸

C++中新函数的认识---拓展延伸

1、回掉函数的认识     

      ----带着问题来学习,目的性比较强,这样会更有方向性※

1.        回调函数是什么东西?

2.        回调函数怎么开发,怎么使用?

3.        回调函数的作用,应该在什么情况下使用?

---------------------------------------------------------------

回答1.回调函数,顾名思义,就是使用者自己定义一个函数,使用者自己实现这个函数的程序内容,然后把这个函数作为参数传入别人(或系统)的函数中,由别人(或系统)的函数在运行时来调用的函数。函数是你实现的,但由别人(或系统)的函数在运行时通过参数传递的方式调用,这就是所谓的回调函数。简单来说,就是由别人的函数运行期间来回调你实现的函数。

回答2.举个例子       

/*回掉函数的认识*/
//几个问题:
//1、callback 第二个参数是回调函数(的地址),竟然无所谓调用函数
//            作为对照:如果是一般的调用函数,只会在函数内调用特定的函数不会这么模糊
//            这种无所谓,即只需指定函数地址  void(*anyvariable)(int)  
//            当特定函数放入,就能调用callback(10, printWelcome); callback(10, printGoodbye);
//2、
printWelcome 和 printGoodbye地址不同 不过相邻很近
#include<stdio.h>
void printWelcome(int len){
    printf("欢迎欢迎--%d\n", len);
}
void printGoodbye(int len){
    printf("送客送客--%d\n", len);
}
void callback(int times, void(*anyvariable)(int)){
    //注意此处第二个参数void(*print)(int) 同要调用的函数的书写格式
    //一致,只不过这是用的地址传递
    int i;
    for (i = 0; i < times; ++i){
        anyvariable(i);//可调用printWelcome(int len)
    }                  //也可调用printGoodbye(int len)
    printf("\n我不知道你是迎客还是送客!\n\n");
}
int main(){
    callback(10, printWelcome);
    callback(10, printGoodbye);
    printWelcome(10);//特定函数的调用 这就同上面的回掉函数不同了
    return 0;
}

 

              callback(10, printWelcome);函数执行结果               callback(10, printGoodbye);回掉函数执行效果                  函数调用执行效果     

回答3.用过STL的人都知道,在STL中众多算法和程序都用到回调函数,这实现了一种策略(转载于:http://blog.csdn.net/callmeback/article/details/4242260/)。只要任何符合我的标准的函数和计算都可以用我这个公式。你可以实现各种各样的回调函数,只要符合我的格式就能用

就上面的程序来说,你只要函数格式符合cllback第二个参数的格式不论你给(任何人像上面的:callback(10, printWelcome);和 callback(10, printGoodbye);)别人做饭、铺床叠被都可以正常工作。这就是回调的作用,把回调实现留给别人。

    参考链接:

     1】http://www.cnblogs.com/chenyuming507950417/archive/2012/01/02/2310114.html   该篇作者写的好理解;同时给出了回掉函数的如何定义和规则。

 


 

posted @ 2017-08-05 23:28  心沉大海-汇聚成一  阅读(153)  评论(0)    收藏  举报