lambada表达式
一.概述
C++ 11 中的 Lambda 表达式用于定义并创建匿名的函数对象,以简化编程工作。
语法形式:
[函数对象参数/捕获] (操作符重载函数参数) mutable 或 exception 声明 -> 返回值类型 {函数体}
二.构成部分分析
1.[函数对象参数/捕获]
内容 | 含义 |
---|---|
空 | 没有任何函数对象参数。 |
= | 函数体内可以使用 Lambda 所在范围内所有可见的局部变量(包括 Lambda 所在类的 this),并且是值传递方式(相当于编译器自动为我们按值传递了所有局部变量) |
& | 函数体内可以使用 Lambda 所在范围内所有可见的局部变量(包括 Lambda 所在类的 this),并且是引用传递方式(相当于是编译器自动为我们按引用传递了所有局部变量) |
this | 函数体内可以使用 Lambda 所在类中的成员变量。 |
a | 将 a 按值进行传递。按值进行传递时,函数体内不能修改传递进来的 a 的拷贝,因为默认情况下函数是 const 的,要修改传递进来的拷贝,可以添加 mutable 修饰符 |
&a | 将 a 按引用进行传递 |
a,&b |