回调函数

来源:互联网 发布:c语言程序停止 编辑:程序博客网 时间:2024/06/05 10:17

回调函数就是函数指针的一种用法。


普通的函数commonFunction,可以向其传递参数,我们对于这个commonFunction进行了一些自定义操作,因为参数对象是我们给定的。


我们是否可以进一步,除了参数对象自定义,我们是否可以自定义一些其他行为呢?  可以 !


参照类多态的概念,针对函数,对其进行一个简单的“多态”操作。


到底函数怎么“多态”呢 ? 我们可以往函数中传入其他函数,具体来说,这个函数我们用指针方式传入。

————————————————————————————————————————————————

举个例子,老师要喝水。


把想要喝水封装成一个函数wannaDrink (),


当老师准备喝水的时候,除了可以指定倒水的具体同学,还可以指定同学取水的方式。


可以让同学从商店买水,我们把这个行为封装成函数buyWater();

 

也可以让同学从饮水机打水,我们把这个行为封装成函数getWaterDispenser();

————————————————————————————————————————————————

下面是伪代码:

void buyWater ( ){ }//取水方式


void getWaterDispenser ( ){  }//取水方式


wannaDrink( stu , void * action ) ){     //喝水动作

stu 走出教室

action ( ) ;      //进行取水操作,这操作是我们传入的函数action( )

}


正在上课{


wannaDrink(同学B,getWaterDispenser)//指定同学,指定打水方式


成功喝水;

}

其中的wannaDrink 就是回调函数,是老师与学生取水动作之间的一个接口,老师告诉同学B如何取水。


简单的“多态”如何体现的呢 ?针对wannaDrink函数,对于传入函数的不同,它进行了不同的操作。


实际上,drink()可以是一个很复杂的操作,这个操作针对的对象可以是我们传入的(平时的传参),除了一些固定的操作以外,我们还可以自定义一些操作,上述例子


中自定义操作的是 取水动作。





0 0
原创粉丝点击