C/C++ 函数指针

需要明确几点:

  1. C/C++函数指针都需要原型
  2. C++对象中,对于静态/非静态函数,只有一份

函数指针原型

  1. C

    1
    返回类型 (*函数指针名称)(参数类型,参数类型,参数类型,…)
  2. C++

    1
    返回类型 (类名称::*函数成员名称)(参数类型,参数类型,参数类型,….)

示例

  1. C

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void FunApp(void)
    {

    // Do something
    }


    typedef void (*pFun_t)(void);

    pFun_t pFun = FunApp;

    pFun();
  2. C++

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    // class
    class MyClass
    {
    public:
    MyClass();
    ~MyClass();

    void printname(void);
    };

    typedef void (MyClass::*pFun_t)(void);

    MyClass mClass;

    pFun_t pFun = &MyClass::printname;

    // Call Function
    mClass.*pFun();