C++ lambda可以捕獲靜態變量,但要注意捕獲方式的正確性。靜態變量是全局變量的一種,因此lambda可以通過捕獲方式來使用靜態變量。
靜態變量可以通過引用捕獲或者復制捕獲的方式被lambda捕獲。引用捕獲會直接引用靜態變量,而復制捕獲會將靜態變量的當前值復制一份給lambda。
例如,以下是一個捕獲靜態變量的lambda示例:
#include <iostream>
void testLambda() {
static int staticVar = 10;
auto lambda = [&staticVar]() {
std::cout << "Static variable value: " << staticVar << std::endl;
};
lambda();
}
int main() {
testLambda();
return 0;
}
在這個示例中,lambda通過引用捕獲了靜態變量staticVar
,并打印了它的值。注意,在lambda內部訪問靜態變量時,需要確保靜態變量在lambda調用時仍然有效。
總而言之,C++ lambda可以捕獲靜態變量,但需要注意捕獲方式的正確性和靜態變量的生存期。