junlon2006 / cpp-feature

c++11 feature etc.
Apache License 2.0
0 stars 1 forks source link

c++11 lambda #16

Open junlon2006 opened 4 years ago

junlon2006 commented 4 years ago

1、lambda定义一个匿名函数,并且可以捕获一定范围内的变量。 2、语法结构:[ capture ] (params) opt -> ret { body; }; capture是捕获列表,param是参数表,opt是函数选项,ret是返回值类型,body是函数体。 3、lambda捕获范围: [] 不捕获任何变量 [&] 捕获外部作用域所有变量,并作为引用在函数体中使用(按引用捕获) [=] 捕获外部作用域所有变量,并作为副本在函数体中使用(按值捕获) [=, &foo] 按值捕获外部作用域中所有变量,并按引用捕获foo变量 [bar] 按值捕获bar变量,同时不捕获其他变量 [this] 捕获当前类中this指针,让lambda表达式拥有和当前类成员函数同样的访问权限,如果已经使用了&或者=,就默认添加此选项。捕获this的目的是可以在lambda中使用当前类的成员函数和成员变量。