函数指针做函数参数

之前一直不太明白函数指针做函数参数,为什么有回调函数。今天总算明白了,记录下。

函数指针做函数参数可以实现调用者与实现者进行了分离,在保证外部调用框架不变的情况下,只需要给不同的函数指针即可实现不同的作用,有点类似于C++的多态。

测试代码如下:

int addFunc(int a, int b)
{
	cout << "addFunc..."<<endl;
	return a + b;
}

int addFuncA(int a, int b)
{
	cout << "addFuncA..."<<endl;
	return a + b;
}

int addFuncB(int a, int b)
{
	cout << "addFuncB..."<<endl;
	return a + b;
}

int addFuncC(int a, int b)
{
	cout << "addFuncC..."<<endl;
	return a + b;
}

typedef int (*MyFuncType)(int a, int b);

int MyFuncTest(MyFuncType pTest)
{
	int c = pTest(3,4);
	return c;
}

int MyFuncTest1(int (*MyFucn1)(int a, int b))  //间接调用 与 上面MyFuncTest 一样
{
	int c = MyFucn1(1,2);
	return c;
}

int main()
{
	MyFuncType pMyFunc = NULL;
	pMyFunc = addFunc;
	pMyFunc(1,2);

	MyFuncTest(pMyFunc);
	MyFuncTest1(addFunc);

	//框架不变,可以实现任意调用  最终实现了任务调用者与实现者进行了分离
	MyFuncTest(addFuncA);
	MyFuncTest(addFuncB);
	MyFuncTest(addFuncC);

	return 0 ;
}

 

回调函数的本质:提前做了一个协议约定(把函数的参数,返回值类型提前约定)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值