zoukankan      html  css  js  c++  java
  • 回调函数的使用

    1、什么是回调函数

      简而言之,回调函数就是一个通过函数指针调用的函数。如果把函数的指针(地址)作为参数传递给另外一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。

    2、为什么要使用回调函数

      因为回调函数可以把调用者和被调用者分开,调用者不关心谁是被调用者,所有它需要知道的,只是存在一个具有某种特定原型,某些限制条件(如返回值为int)的被调用函数。回调函数就好像是一个中断处理函数,系统在符合你设定的条件时自动调用。

    3、如何使用回调函数

      使用回调函数时,我们需要做三件事:

      (1)声明

      (2)定义

      (3)设置触发条件:在你的函数中把你的回调函数名臣转化为地址作为一个参数,以便于系统调用。

      #声明和定义时应该注意,回调函数由系统调用,所以可以认为它属于windows系统,不要把它当作你的某个类的成员函数。

    函数指针的声明:

      对回调函数有了一个初步的了解,下面我们来说一下函数指针,因为要实现回调,必须首先定义函数指针:

      void(*)();

      #左边圆括弧中的星号是函数指针声明的关键。另外两个元素是函数的返回类型(void)和右边圆括弧中的入口参数。

    函数指针声明类型定义

      Typedef void(* pfv)()

      #pfv是一个函数指针,它指向的函数没有输入参数,返回类型为void,使用这个类型定义名称可以隐藏负责的函数指针语法。

      void(*p)()

      void func()

      {

      ……

      }

      p = func;

      p的赋值可以不同,但一定要是函数的指针,并且参数和返回类型相同。

      例如:下面一个例子

    [cpp] view plain copy
     
    1. #include <iostream>  
    2. using namespace std;  
    3.   
    4. typedef void (*PF)(); //函数指针的声明  
    5. void func()   //回调函数定义  
    6. {  
    7.   cout << "func" << endl;  
    8. }  
    9.   
    10. void caller( PF pf)  //即触发条件  
    11. {  
    12.   pf();  
    13. }  
    14.   
    15. int main()  
    16. {  
    17.   PF p = func;  
    18.   caller(p);   //最终通过函数指针PF调用了回调函数func()  
    19.   
    20.   system("pause");  
    21.   
    22.   return 0;  
    23. }  
  • 相关阅读:
    在上传文件时限制上传文件的大小,并捕捉超过文件大小限制的
    javascript 获取标签具体位置
    终端服务器超出了最大允许连接数
    常用SQL语句书写技巧
    Javascript实现截图功能(代码)
    JavaScript实现类,有多种方法。
    DBCC CHECKDB 数据库或表修复
    Lucene的例子
    控制同一exe程序打开多次
    IIS6 MMC检测到此管理单元发生一个错误,建议您关闭并重新启动mmc
  • 原文地址:https://www.cnblogs.com/xlpsky/p/6178230.html
Copyright © 2011-2022 走看看