/**//*
*测试成员函数指针的小程序,有typedef与没有typedef的区别
*/
#include <iostream>
using namespace std;
class Test
{
public:
Test();
~Test();
private:
void add5(){ res+=5;}
void add6(){ res+=6;}
typedef void (Test::*add_5)();//现在add_5是一个类型了
add_5 p_add_5;//p_add_5才是一个函数指针
void (Test::*add_6)();//现在add_6是一个函数指针变量
public:
void DoAddAction();
void Display();
private:
int res;
};
Test::Test()
{
p_add_5=&Test::add5;//注意这里的写法
add_6=&Test::add6; //无论在类外还是类内,这个&都不能少
res=0;
}
Test::~Test()
{
}
void Test::DoAddAction()
{
(this->*p_add_5)();//使用类成员函数指针必须有“->*”或“.*”的调用
(this->*add_6)();
}
void Test::Display()
{
cout<<"The res is:"<<res<<endl;
}
int main()
{
Test * test=new Test();
test->DoAddAction();
test->Display();
delete test;
return 0;
}