温馨提示×

C++ lambda捕获this指针的特殊性

c++
小樊
254
2024-07-05 19:03:29
栏目: 编程语言
C++开发者专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

在C++中,lambda表达式默认是无法捕获this指针的。如果需要在lambda表达式中使用this指针,需要显式地将this指针传递给lambda表达式,可以通过在lambda表达式的参数列表中使用this指针进行捕获。

例如,在一个类的成员函数中定义一个lambda表达式,并捕获this指针:

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

在上面的例子中,lambda表达式捕获了this指针,并在lambda表达式中调用了该类的成员函数bar()。这样就可以在lambda表达式中访问该类的成员变量和成员函数。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读:C++ lambda捕获有哪些常见误区

0