// demo.hpp
class CDemo
{
typedef int (CDemo::*pfnHandler)(int); // CDemo类的成员函数指针类型的声明
private:
pfnHandler m_pfnHandler;
private:
int Handler(int i);
public:
CDemo();
void Call();
};
// demo.cpp
#include <stdio.h>
#include "demo.hpp"
CDemo::CDemo()
{
m_pfnHandler = &CDemo::Handler; // 函数指针的赋值,将CDemo类的同类型的成员函数赋值给函数指针
}
int CDemo::Handler(int i)
{
printf("demo: %d/n", i);
return 0;
}
void CDemo::Call()
{
(this->*m_pfnHandler)(1); // 通过函数指针调用函数Handler
}
int main()
{
CDemo demo;
demo.Call();
return 0;
}
通常使用函数指针数组来取代冗长的swith-case结构。