//普通函数指针数组
void f1(int a){ printf("f1=%d/n",a); };
void f2(int a){ printf("f2=%d/n",a); };
void (*fun[2])(int); //[]的优先级高于*,所以这是一个指针数组
void main(){
fun[0] = f1; //函数指针数组初始化
fun[1] = f2;
(*fun[0])(0); //调用
(*fun[2])(1);
};
//类内的函数指针数组
class A
{
public:
A(){
fun[0] = &A::f1; //函数指针数组初始化
fun[1] = &A::f2;
};
~A(){};
private:
void f1(int a){ printf("f1=%d/n",a); };
void f2(int a){ printf("f2=%d/n",a); };
//函数指针数组
void (A::*fun[2])(int); //[]的优先级高于*,所以这是一个指针数组
//或
//typedef void (A::*FUN)();
//FUN fun[2];
void test(){
(this->*fun[0])(0); //调用的时候this不能少,否则编译出错
(this->*fun[2])(1); //如果指针是静态成员变量,则不用this
}
};