最近在学习C++,开发windows程序,用c++编程真是一件爽歪歪的事情!最近让我印象深刻,有种莫名其妙的冲动的感觉,对函数回调产生了浓厚兴趣,分分钟想解剖他。
回调机制的本质是函数指针在作祟。最近在编程的时候,看到前辈们用的这样的代码,瞬间秒掉了我,顿时毁了我的世界观!世间竟有如此美的代码!
typedef int (*func)(void);刚开始看到这样的一条语句真心不解,充满着神奇和好奇!起初看到前辈们是用在函数的回调上面,花了点时间研究了下,最后查完资料才顿时觉悟
上面这条语句是表示函数指针类型func,例如func fn;则表示的是fn函数指针是指向返回值为int,没有带形参的函数!而这样的函数指针可以指向回调函数的入口地址,因而即可实现回调机制。因此可以这样说回调函数的本质是入口地址可以发生变化的一种函数,可以在用户需要一些操作触发一些函数的执行,典型的例子是我们界面的按键等控件当用户操作的时候,要对应的执行一些函数。
同理有typedef bool (*func)(void);
typedef void (*func)(void);等等
另外一个好处就是利用typedef int (*func)(void);可以减少函数指针定义的繁琐,如果没有加上面的定义的话,当你函数要定义的时候需要的就是 bool (*fn)(void);这样才是表示一个函数指针,而如果有了typedef int (*func)(void);则不用那么麻烦,直接就可以用func fn;就表示是函数指针。