C++中的可调用对象

本文介绍了C++中的可调用对象,包括函数指针、lambda表达式的捕获列表如何简化算法使用,以及bind函数作为通用适配器创建新可调用对象的功能。此外,还探讨了重载了函数调用运算符的函数对象在实现自定义行为中的作用。
摘要由CSDN通过智能技术生成
之前对C++中的多种可调用对象的使用总感觉很模糊,今天重新翻看了一下,总结成文如下。
       C++中有如下几种可调用对象:函数、函数指针、lambda表达式、bind对象、函数对象。其中lambda表达式和bind对象是C++11标准中提出的(bind机制并不是新标准中首次提出,而是对旧版本中bind1st和bind2st的合并)。个人认为五种可调用对象中,函数和函数指针本质相同,而lambda表达式、bind对象及函数对象则异曲同工。下面分别给出五种调用的使用:
1、函数。保证了对C的兼容。

2、函数指针。和数组名一样,函数名即为函数指针。

void fff(int x){  //被调用的函数
	cout<<x<<endl;
}
void fcn(void (*fp)(int ),int x){  //形参为函数指针
	fp(x);
}
typedef void (*Ftype)(int ); //定义一个函数指针类型Ftype
void fcn0(Ftype fp,int x){ 
	fp(x);
}
int main(){
	fcn(fff,100);  //函数fcn调用函数fff
	fcn0(fff,200); //函数fcn0调用函数fff
}
3、lambda表达式。lambda表达式就是一段可调用的代码。主要适合于只用到一两次的简短代码段。由于lambda是匿名的,所以保证了其不会被不安全的访问。lambda表达式的形式如下:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值