指向全局函数的函数指针
void fun()
{
cout<<“fun()”<<endl;
}
void (*pFun)();
pFun=&fun;
指向类成员函数的函数指针
void MyClass::fun()
{
cout<<“MyClass::fun()”<<endl;
}
void (MyClass:: *pFun)();
pFun=&MyClass::fun;
示例代码如下:
// 类的函数指针
#include <iostream>
using namespace std;
// 成员函数
class MyClass
{
public:
void fun();
// 带参数的函数
void fun2(int n);
static void fun3();
};
// fun() 实现
void MyClass::fun()
{
cout << "MyClass:: fun()" << endl;
}
void MyClass::fun2(int n)
{
cout << "MyClass:: fun("<< n <<")" << endl;
}
void MyClass::fun3()
{
}
int main()
{
void (*pFun3)();
pFun3 = &MyClass::fun3;
// 类的指针需要前面添加类
void (MyClass:: *pFun)();
pFun = &MyClass:: fun;
//第一种类调用
MyClass p1;
// (p1.*pFun) 是一个整体
(p1.*pFun) ();
//第二种类调用
MyClass *p2 = new MyClass;
// (p2->*pFun) 是一个整体
(p2->*pFun)();
void (MyClass:: *pFun2)(int);
pFun2 = &MyClass:: fun2;
// 使用类的对象调用
(p1.*pFun2)(5);
(p2->*pFun2)(5);
// 堆内存需要释放
delete p2;
return 0;
}