
/**//*
*測(cè)試成員函數(shù)指針的小程序,有typedef與沒有typedef的區(qū)別
*/
#include <iostream>
using namespace std;

class Test


{
public:
Test();
~Test();

private:

void add5()
{ res+=5;}

void add6()
{ res+=6;}

typedef void (Test::*add_5)();//現(xiàn)在add_5是一個(gè)類型了
add_5 p_add_5;//p_add_5才是一個(gè)函數(shù)指針

void (Test::*add_6)();//現(xiàn)在add_6是一個(gè)函數(shù)指針變量
public:
void DoAddAction();
void Display();
private:
int res;
};


Test::Test()


{
p_add_5=&Test::add5;//注意這里的寫法
add_6=&Test::add6; //無論在類外還是類內(nèi),這個(gè)&都不能少
res=0;
}

Test::~Test()


{

}

void Test::DoAddAction()


{
(this->*p_add_5)();//使用類成員函數(shù)指針必須有“->*”或“.*”的調(diào)用
(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;
}