Lambda表达式的基本构成
1.函数对象参数;
[ ],标识一个Lambda的开始,这部分必须存在,不能省略。函数对象参数是传递给编译器自动生成的函数对象类的构造函数的。函数对象参数只能使用那些到定义Lambda为止时Lambda所在作用范围内可见的局部变量(包括Lambda所在类的this)J函数对象参数有以下形式: .
■空。 没有使用任何函数对象参数。
■=。 函数体内可以使用Lambda所在作用范围内所有可见的局部变量(包括Lambda所在类的 this),并且是值传递方式(相当于编译器自动为我们按值传递了所有局部变量)。
■&。函数体内可以使用Lambda所在作用范围内所有可见的局部变量(包括Lambda所在类的this),并且是引用传递方式(相当于编译器自动为我们按引用传递了所有局部变量)。
■this。函数体内可以使用Lambda所在类中的成员变量。
■a。将a按值进行传递。按值进行传递时,函数体内不能修改传递进来的a的拷贝,因为默认情况下函数是const的。要修改传递进来的a的拷贝,可以添加mutable修饰符。
■&a.将a按引用进行传递。
■a, &b。将a按值进行传递,b按引用进行传递。
■=,&a, &b。除a和b按引用进行传递外,其他参数都按值进行传递。
■&,a,b.除a和b按值进行传递外,其他参数都按引用进行传递。
3.如果按值传递,想要修改值,就加上mutable
4.如果抛出异常,就加上关键字exception
5.如果有返回值,就加上 ->类型