我正在阅读本书第3章中的C++ lambda部分,以下代码让我困惑:
int x = 0;
int y = 42;
auto qqq = [x, &y] {
std::cout << "x: " << x << std::endl;
std::cout << "y: " << y << std::endl;
++y;
};
x = y = 77;
qqq();
qqq();
std::cout << "final y: " << y << std::endl;
Run Code Online (Sandbox Code Playgroud)
这段代码打印出来:
x: 0
y: 77
x: 0
y: 78
final y: 79
Run Code Online (Sandbox Code Playgroud)
为什么qqq()没有注册x已经改为77?据说,通过值传递意味着我们可以读取但不能修改定义lambda的数据.这是否意味着我们在定义后无法看到变化?