C++ 函式指標 指向類成員函式
阿新 • • 發佈:2018-12-14
//A類與B類的定義
class A
{
public:
void Test()
{
cout << "A::Test()" << endl;
}
};
class B : public A
{
public:
void Test()
{
cout << "B::Test()" << endl;
}
};
//定義類的成員函式指標
typedef void (A::*A_mFun)(void);
typedef void (B::*B_mFun)(void);
int main()
{
//Code
A a;
B b;
A_mFun pAFun = &(A::Test); //Note:Test成員函式必須為public,否則會報錯
B_mFun pBFun = &(B::Test); //Note:Test成員函式必須為public,否則會報錯
(a.*pAFun)(); //輸出A::Test()
(b.*pBFun)(); //輸出B::Test()
(b.*pAFun)(); //輸出A::Test()
A* pA = &a;
B* pB = &b;
(pA->*pAFun)(); //輸出A::Test()
(pB->*pBFun)(); //輸出B::Test()
(pB->*pAFun)(); //輸出A::Test(),B*變數可賦值給A*變數
return 0;
}