我最近在c++ 11中研究lambda函数。但是我不知道[=]
和[&]
之间是否有区别。如果有,区别是什么?
在这两种情况下,lambda主体中的this
是否有任何区别?
最佳答案
区别在于如何捕获值
&
=
按值捕获快速示例
int x = 1;
auto valueLambda = [=]() { cout << x << endl; };
auto refLambda = [&]() { cout << x << endl; };
x = 13;
valueLambda();
refLambda();
此代码将打印
1
13
第一个lambda在定义
x
的点按值捕获valueLambda
。因此,它获得1
的当前值。但是refLambda
捕获了对本地的引用,因此可以看到最新的值