C/C++ 回调函数(即函数指针)的理解及一些思考

【01】要想从本质的去函数某一类函数,就要问为什么要引入这类函数?即下面回答为什么要使用回调函数 。

【写在前面】网上有很多资料,给出概念后,就洋洋洒洒的给出回调函数的例子,好多人看了,觉得我知道怎么用了,但很多时候我们真没有从本质上去理解回调函数 。其中有一个经典的例子卖东西留电话号码之类的,看懂意思了,但这样的说明很泛的。看了之后,如果不想深究的兄弟觉得自己懂了,想深究的兄弟,觉得越看越似懂非懂,苦呀!

1. 【为什么要使用回调函数:理解01】

     回调函数为了封装特性。即C语言中存在大量的过程函数,如你想在某个函数(假如叫A函数或者说你想使用某个库,此库的A函数上有某些功能很合适你的使用场景)增加某些功能(即之前A函数有1、2功能,现在想加3功能这样会更符合你的使用场景,本来可以直接在A函数改的(或者你只有库,没有源码),但这样违背了程序的开闭原则(即对于扩展是开放的,但是对于修改是封闭的),于是使用开原则,于是你使用B函数封装了A函数,B函数可能有A函数更多的功能,一般都有,否则你直接使用A函数即可,B函数是按你的使用场景写的(注:回调函数概念中隐含有这层意思,如果不理解开闭原则的人,很难透彻的理解到这层意思,虽然看概念大家都觉得自已懂了,但是如果不懂什么是开闭原则的兄弟,远没有真正的理解回调函数的概念),这就是回调函数本质过程,回调函数功能就是A函数功能(注意是功能),你把它A函数作成参数则需要把A函数改变成指针就成了回调函数。当然,封装后完全可以设定某个条件才能触发A函数产生,无条件也是条件的一种,所以有些B函数根本就没有if什么就直接使用A函数。

2. 【为什么要使用回调函数:理解02(不太是原因,只能算是一个知识点吧)】

动态联编问题。这本就是指针的属性,回调函数是指针,可以往这方面使用。但这应该不是它产生主要原因。第一个原则,已经足够它出生了。开闭原则真的很大,大过天呀!真的!哈!!

 

3.【未清楚的问题】

回调函数是什么时候引入的,是先在C语言中引入,然后才引入C++的,还是先是C++引入,然后C才引入?有知道的兄弟告知我一下,最好留下证据,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值