C++ lambda捕獲this指針的特殊性

c++
小樊
162
2024-07-05 19:03:29

在C++中,lambda表達(dá)式默認(rèn)是無(wú)法捕獲this指針的。如果需要在lambda表達(dá)式中使用this指針,需要顯式地將this指針傳遞給lambda表達(dá)式,可以通過(guò)在lambda表達(dá)式的參數(shù)列表中使用this指針進(jìn)行捕獲。

例如,在一個(gè)類(lèi)的成員函數(shù)中定義一個(gè)lambda表達(dá)式,并捕獲this指針:

class MyClass {
public:
    void foo() {
        auto lambda = [this]() {
            // 在lambda表達(dá)式中使用this指針
            this->bar();
        };
        
        lambda();
    }
    
    void bar() {
        std::cout << "Hello from bar" << std::endl;
    }
};

在上面的例子中,lambda表達(dá)式捕獲了this指針,并在lambda表達(dá)式中調(diào)用了該類(lèi)的成員函數(shù)bar()。這樣就可以在lambda表達(dá)式中訪(fǎng)問(wèn)該類(lèi)的成員變量和成員函數(shù)。

0