温馨提示×

C++ lambda捕获静态变量行吗

c++
小樊
115
2024-07-05 19:02:22
栏目: 编程语言

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可以捕获静态变量,但需要注意捕获方式的正确性和静态变量的生存期。

0