函数指针作为函数参数(回调函数)

产生回调的原因:通过一系列约定实现 约定参数类型 约定返回值类型等
结论:回调函数的本质:提前做了一个协议的约定(把函数的参数、函数返回值提前约定)
C++编译器通过多态的机制(提前布局vptr指针和虚函数表,找虚函数入口地址来实现)

int myAdd(int a, int b){
	cout << "myAdd a+b: " << a + b << endl;
	return a + b;
}
int myAdd2(int a, int b){
	cout << "myAdd2 a+b+b: " << a + b + b << endl;
	return a + b + b;
}
int myAdd3(int a, int b){
	cout << "myAdd3 a+a+b: " << a + a + b << endl;
	return a + a + b;
}
//定义一个类型
typedef int(*MytypeAdd)(int a, int b);
//函数指针 做参数
int mainOp(MytypeAdd myfun){
	return myfun(3, 4);
}
int mainOp2(int(*MytypeAdd)(int a, int b)){
	return MytypeAdd(5, 6);
}
Main:
	MytypeAdd add = NULL;
	add = myAdd;
	add(4, 5);
	mainOp(myAdd);
	mainOp2(myAdd);
	//主框架不发生变化 类似多态
	MytypeAdd add2 = NULL;
	add2 = myAdd2;
	mainOp(myAdd2);
	mainOp2(myAdd2);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值