C++11中的Lambda表达式构成之——捕获值列表
2014-02-20 14:03
344 查看
摘抄之:捕获值列表,是允许我们在Lambda表达式的函数体中直接使用这些值,捕获值列表能捕获的值是所有在此作用域可以访问的值,包括这个作用域里面的临时变量,类的可访问成员,全局变量。捕获值的方式分两种,一种是按值捕获,一种是按引用捕获。顾名思义,按值捕获是不改变原有变量的值,按引用捕获是可以在Lambda表达式中改变原有变量的值。
[捕获值列表]:
1、空。没有使用任何函数对象参数。
2、=。函数体内可以使用Lambda所在作用范围内所有可见的局部变量(包括Lambda所在类的this),并且是值传递方式(相当于编译器自动为我们按值传递了所有局部变量)。
3、&。函数体内可以使用Lambda所在作用范围内所有可见的局部变量(包括Lambda所在类的this),并且是引用传递方式(相当于编译器自动为我们按引用传递了所有局部变量)。
4、this。函数体内可以使用Lambda所在类中的成员变量。
5、a。将a按值进行传递。按值进行传递时,函数体内不能修改传递进来的a的拷贝,因为默认情况下函数是const的。要修改传递进来的a的拷贝,可以添加mutable修饰符。
6、&a。将a按引用进行传递。
7、a, &b。将a按值进行传递,b按引用进行传递。
8、=,&a, &b。除a和b按引用进行传递外,其他参数都按值进行传递。
9、&, a, b。除a和b按值进行传递外,其他参数都按引用进行传递。
[捕获值列表]:
1、空。没有使用任何函数对象参数。
2、=。函数体内可以使用Lambda所在作用范围内所有可见的局部变量(包括Lambda所在类的this),并且是值传递方式(相当于编译器自动为我们按值传递了所有局部变量)。
3、&。函数体内可以使用Lambda所在作用范围内所有可见的局部变量(包括Lambda所在类的this),并且是引用传递方式(相当于编译器自动为我们按引用传递了所有局部变量)。
4、this。函数体内可以使用Lambda所在类中的成员变量。
5、a。将a按值进行传递。按值进行传递时,函数体内不能修改传递进来的a的拷贝,因为默认情况下函数是const的。要修改传递进来的a的拷贝,可以添加mutable修饰符。
6、&a。将a按引用进行传递。
7、a, &b。将a按值进行传递,b按引用进行传递。
8、=,&a, &b。除a和b按引用进行传递外,其他参数都按值进行传递。
9、&, a, b。除a和b按值进行传递外,其他参数都按引用进行传递。
相关文章推荐
- C++11中的Lambda表达式构成之——捕获值列表
- C++11 在析构函数中执行lambda表达式(std::function)捕获this指针的陷阱
- C++11Lambda捕获列表使用
- Cocos2d-x_C++11新特性Lambda表达式
- C++11 Lambda表达式(匿名函数)
- C++11中的匿名函数(lambda函数,lambda表达式)
- C++11 lambda表达式
- 每天进步一点点——C++11中使用lambda表达式实现一个简单的ScopeGuard
- C++11 lambda表达式
- C++11进阶知识列表
- c++ lambda表达式捕获变量参数
- C++11 lambda表达式
- C++11新增特性Lambda表达式
- C++11 Lambda表达式
- 多播委托的使用举例、出现异常时多播委托需要用迭代方法列表、匿名方法、lambda表达式
- c++11 for_each结合lambda表达式的使用 高效优雅的代码 有代码有真相
- C++11中的匿名函数(lambda函数,lambda表达式)
- C++11 新特性之 Lambda表达式
- 捕获fail2ban截获的Ip写入拒绝主机列表
- C++11 Lambda表达式简单解析