1) 利用lambda表达式可以编写内嵌的匿名函数,用以替换独立函数或者函数对象;
2) 每当你定义一个lambda表达式后,编译器会自动生成一个匿名类(这个类当然重载了()运算符),我们称为闭包类型(closure type)。那么在运行时,这个lambda表达式就会返回一个匿名的闭包实例,其实一个右值。
所以,我们上面的lambda表达式的结果就是一个个闭包。闭包的一个强大之处是其可以通过传值或者引用的方式捕捉其封装作用域内的变量,前面的方括号就是用来定义捕捉模式以及变量,我们又将其称为lambda捕捉块。
3) lambda表达式的语法定义如下:
cpp
[capture] (parameters) mutable ->return-type {statement};
即 [捕获列表](参数)mutable -> 返回值 {函数体}
4) lambda必须使用尾置返回来指定返回类型,可以忽略参数列表和返回值,但必须永远包含捕获列表和函数体;
update1:微信好友“健康哥”指出代码实现部分笔误,感谢。
THE END
暂无评论内容