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; }
回答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 该篇作者写的好理解;同时给出了回掉函数的如何定义和规则。

浙公网安备 33010602011771号