函数指针常用的有三类
1、指向普通函数的函数指针
2、指向类中静态成员函数的函数指针
3、指向类的成员函数的函数指针
一、指向普通函数的函数指针
#include <iostream> using namespace std; void Show() { cout<<"Show()"<<endl; } typedef void(*pFun)(); //定义函数指针类型 int main() { pFun p = &Show; (*p)(); return 0; }
二、指向类中静态成员函数的函数指针
指向类中静态成员函数的函数指针的声明形式:
#include <iostream> using namespace std; class CPeople { public: int num; public: CPeople() { num = 100; } static void Show() { cout<<"static void Show()"<<endl; } void ShowShow() { cout << "ShowShow()" << num << endl; } }; typedef void (*PFUN)(); // 普通的函数指针 typedef void (CPeople::*PFUN_A)(); // 成员函数指针 // ::* .* ->* 都是编译器提供的新的操作符 支持成员函数指针的操作 int main() { //PFUN fun = &CPeople::Show; // 普通的函数指针 要指向类的函数 那么这个函数一定要static PFUN_A fun_a; // 成员函数指针的赋值 fun_a = &CPeople::ShowShow; CPeople pep; (pep.*fun_a)(); // 成员函数指针的调用 CPeople* p = new CPeople; (p->*fun_a)(); system("pause"); return 0; }