c++成員函數指針
class MyClassA
{
public:
MyClassA();
~MyClassA();
int Method1();
private:
};
MyClassA::MyClassA()
{
}
MyClassA::~MyClassA()
{
}
int MyClassA::Method1()
{
int a = 0;
return a;
}
int main()
{
int (MyClassA :: * pMethod1)() = &MyClassA::Method1;//函數指針初始化,格式:返回類型(函數指針變量名及作用域)(函數指針指向函數的參數)
//pMethod1 = &MyClassA::Method1;//函數指針重定向
(myClassA.*pMethod1)();//通過指針調用
}
將函數指針作爲函數參數傳入
這種方式可以用來實現函數回調的功能。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
class MyClassA
{
public:
MyClassA();
~MyClassA();
int Method1();
private:
};
MyClassA::MyClassA()
{
}
MyClassA::~MyClassA()
{
}
int MyClassA::Method1()
{
int a = 0;
return a;
}
class MyClassB
{
public:
MyClassB();
~MyClassB();
int Method2(int (MyClassA ::* pMethod1)());
private:
};
MyClassB::MyClassB()
{
}
MyClassB::~MyClassB()
{
}
int MyClassB::Method2(int (MyClassA ::* pMethod1)())//以函數指針爲參數的函數
{
MyClassA myClassA;
int a = (myClassA.*pMethod1)();//通過函數指針調用目標函數
return a;
}
int main()
{
int (MyClassA :: * pMethod1)() = &MyClassA::Method1;//函數指針初始化,格式:返回類型(函數指針變量名及作用域)(函數指針指向函數的參數)
//pMethod1 = &MyClassA::Method1;//函數指針重定向
MyClassB myClassB;
myClassB.Method2(pMethod1);
}
打個斷點單步跑一下就一目瞭然