c++ 函数指针

       首先我们定义一些函数,分别使用函数指针调用它们。

//自定义类
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
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值