C++笔记之lambda捕获列表中的‘this‘指针

C++笔记之lambda捕获列表中的’this’指针

code review!
C++笔记之lambda捕获列表中的‘this‘指针_第1张图片
捕获this指针的lambda表达式在C++中有多种应用场景。以下是一些示例:

  1. 异步编程:当您需要在异步操作中访问类的成员变量或成员函数时,可以使用捕获this指针的lambda表达式。例如,在使用异步任务库时,您可以捕获this指针以访问对象的成员。
#include 
#include 

class MyClass {
public:
    void PerformAsyncTask() {
        std::future<void> result = std::async([this]() {
            // 在异步任务中访问类的成员
            std::cout << "Async task accessing data: " << data << std::endl;
        });
    }

private:
    int data = 42;
};

int main() {
    MyClass obj;
    obj.PerformAsyncTask();
    std::this_thread::sleep_for(std::chrono::seconds(1)); // 等待异步任务完成
    return 0;
}
  1. 回调函数:当您需要将成员函数作为回调传递给外部库或其他函数时,捕获this指针的lambda表达式可以非常有用。Lambda函数可以在回调时访问类的成员。
#include 
#include 

class MyClass {
public:
    void RegisterCallback() {
        // 将成员函数作为回调传递
        std::function<void()> callback = [this]() {
            std::cout << "Callback accessing data: " << data << std::endl;
        };
        // 模拟回调
        callback();
    }

private:
    int data = 42;
};

int main() {
    MyClass obj;
    obj.RegisterCallback();
    return 0;
}

这些是一些使用捕获this指针的lambda表达式的示例,它们允许您在不暴露私有成员的情况下访问类的成员,并能够将成员函数传递给需要回调的函数或库。

你可能感兴趣的:(c++,笔记,开发语言)