lambda表达式与回调函数

lambda表达式

lambda表达式是c++11中的一个语法糖,是c++ 11最重要也最常用的一个特性之一。

lambda表达式优点:

声明编程风格:就地匿名定义目标函数或函数对象,不需要额外写一个命名函数或者函数对象,以一个更直接的方式去写程序,好的可读性和可维护性。

简洁:不需要额外再写一个函数或者函数对象,避免代码膨胀和功能分散,让开发者更加几种经理在手边的问题,获取了更高的生产率。

在需要的时间地点实现功能闭包,程序显得更加灵活。

lambda表达式概念用法

lambda表达式定义了一个匿名函数,并且可以捕获一定范围内的变量

[capture](params)opt->ret{body;};
capture是捕获列表,params是参数表 ,opt是函数选项,ret是返回值类型,body是函数体

链接:http://c.biancheng.net/view/3741.html

lambda表达式可以通过捕获列表捕获一定范围内的变量:


[]不捕获任何变量

[&]捕获外部作用域中所有变量,并作为引用在函数体中使用(按引用捕获)

[=]捕获外部作用域中所有变量,并作为副本在函数体中使用(按值捕获)

[=,&foo]按值捕获外部作用域中所有变量,1并按引用捕获foo变量

[bar]按值捕获bar变量,不捕获其他变量

[this]捕获当前类中的this指针,让lambda表达式拥有和当前类成员函数同样的访问权限,如果已经使用了&或者=,就默认添加此选项,捕获this的目的是可以在lambda中使用当前类的成员函数和成员变量.

typedef std::function<void(int ,int)>fn;
void my_recv(int i,int size fn f1){
}
my_recv(2,5,[&}(int x,int c){
cout<<x+c;
cout<<endl;});


原文链接: https://www.cnblogs.com/k120120cc/p/15158104.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    lambda表达式与回调函数

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/213112

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月13日 上午1:36
下一篇 2023年2月13日 上午1:37

相关推荐