需要明确几点:
- C/C++函数指针都需要原型
- C++对象中,对于静态/非静态函数,只有一份
函数指针原型
C
1
返回类型 (*函数指针名称)(参数类型,参数类型,参数类型,…)
C++
1
返回类型 (类名称::*函数成员名称)(参数类型,参数类型,参数类型,….)
示例
C
1
2
3
4
5
6
7
8
9
10
11void FunApp(void)
{
// Do something
}
typedef void (*pFun_t)(void);
pFun_t pFun = FunApp;
pFun();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();