目录
调用全局函数
调用静态成员函数
调用普通成员函数
调用const成员函数
首先我们定义一些函数,分别使用函数指针调用它们。//自定义类
class CTest
{
public:
CTest():m_nA(0),m_nB(0)
{}
//静态函数
static int Add(int a, int b,int c)
{
std::cout << "CTest::Add(int a,int b,int c)" << std::endl;
return a + b + c;
}
//普通成员函数
int Add(int a)
{
std::cout << "CTest::Add(int a)" << std::endl;
return a;
}
//const成员函数
int Add(int a, int b) const
{
std::cout << "CTest::Add(int a,int b) const" << std::endl;
return a + b;
}
private:
int m_nA;
int m_nB;
};
//全局函数
int Add()
{
std::cout << "Add()" << std::endl;
return 0;
}
int Add(int a, int b)
{
std::cout << "Add(int a,int b)" << std::endl;
return a + b;
}
调用全局函数
int main()
{
//定义一个函数指针变量
int(*pFun1)() = nullptr;//全局函数
int(*pFun2)(int a, int b) = nullptr;//全局函数
//赋值对应的函数
pFun1 = &Add;
pFun2 = &Add;
//调用该函数指针变量
int nRt1 = pFun1(); //Add()
int nRt2 = pFun2(4,7); //Add(int a,int b)
std::cout << nRt1 << std::endl;//0
std::cout << nRt2 << std::endl;//11
}
调用静态成员函数
int main()
{
//定义一个函数指针变量
int(*pFun3)(int a, int b, int c) = nullptr;//静态成员函数
//赋值对应的函数
pFun3 = &CTest::Add;
//调用该函数指针变量
int nRt3 = pFun3(1,2,3);//CTest::Add(int a,int b,int c)
std::cout << nRt3 << std::endl;//6
}
调用普通成员函数
int main()
{
//定义一个函数指针变量
int(CTest::*pFun4)(int a) = nullptr;//普通成员函数
//赋值对应的函数
pFun4 = &CTest::Add;
//调用该函数指针变量
CTest t;
int nRt4 = (t.*pFun4)(4);//CTest::Add(int a)
std::cout << nRt4 << std::endl;//4
}
调用const成员函数
int main()
{
//定义一个函数指针变量
int(CTest::*pFun5)(int a,int b) const = nullptr;//const成员函数
//赋值对应的函数
pFun5 = &CTest::Add;
//调用该函数指针变量
CTest t2;
int nRt5 = (t2.*pFun5)(4,9);//CTest::Add(int a,int b) const
std::cout << nRt5 << std::endl;//13
}