匿名函数按值捕获静态变量
时间: 2023-09-02 22:10:30 浏览: 215
深入浅析Python 函数注解与匿名函数
在匿名函数(Lambda函数)中,按值捕获静变量与按值捕获普通变量的方式是相同的。静态变量在Lambda函数中的捕获行为与普通变量是一致的。
当在匿名函数中按值捕获静态变量时,该变量的值会被拷贝到匿名函数的内部,并在函数中使用这个拷贝的值。这意味着即使外部的静态变量发生了改变,Lambda函数内部的拷贝值也不会受到影响。
下面是一个示例代码,演示了匿名函数按值捕获静态变量的用法:
```cpp
#include <iostream>
void foo() {
static int count = 0; // 静态变量
auto lambda = [count]() {
std::cout << "Count: " << count << std::endl;
};
count++; // 修改静态变量的值
lambda(); // 调用匿名函数
}
int main() {
foo(); // 输出:Count: 0
foo(); // 输出:Count: 0
foo(); // 输出:Count: 0
return 0;
}
```
在上面的示例中,静态变量 `count` 在每次调用 `foo()` 函数时都会自增。然而,按值捕获的匿名函数 `lambda` 中的 `count` 始终保持了初始值0,而不受外部静态变量的更改影响。
希望对你有所帮助!如果还有其他问题,请随时提问。
阅读全文