溫馨提示×

C++ lambda捕獲靜態(tài)變量行嗎

c++
小樊
115
2024-07-05 19:02:22
欄目: 編程語言

C++ lambda可以捕獲靜態(tài)變量,但要注意捕獲方式的正確性。靜態(tài)變量是全局變量的一種,因此lambda可以通過捕獲方式來使用靜態(tài)變量。

靜態(tài)變量可以通過引用捕獲或者復制捕獲的方式被lambda捕獲。引用捕獲會直接引用靜態(tài)變量,而復制捕獲會將靜態(tài)變量的當前值復制一份給lambda。

例如,以下是一個捕獲靜態(tài)變量的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通過引用捕獲了靜態(tài)變量staticVar,并打印了它的值。注意,在lambda內(nèi)部訪問靜態(tài)變量時,需要確保靜態(tài)變量在lambda調(diào)用時仍然有效。

總而言之,C++ lambda可以捕獲靜態(tài)變量,但需要注意捕獲方式的正確性和靜態(tài)變量的生存期。

0