C++匿名函数

#include <iostream>

std::string aaa = "111";

int main() {
    // [] 称为lambda捕获列表,它的含义为:告诉编译器需要在匿名函数内部使用外部的变量。捕获列表中的内容控制着匿名函数对外部作用域的变量的访问权限。
    // a、[] 空捕获
    auto func_a = [](int x, int y) { return x + y; };
    std::cout << func_a(3, 4) << std::endl;

    // b、[x, y] 指定目标捕获
    int x = 10, y = 20;
    auto func_b = [x, y](int a, int b) {
        return x + y + a + b;
    };
    std::cout << func_b(100, 200) << std::endl;


    int a = 123;
    int b = 321;
    // c、[&] 引用捕获,可捕获所有能够访问到的变量(修改原值)
    ([&]() {
        aaa = "222";
        a = a + b;
        b = a + b;
    })();
    // d、[=] 值捕获,可捕获所有能够访问到的变量(不能原值)
    ([=]() {
        std::cout << a << std::endl;
        std::cout << b << std::endl;
    })();

    std::string bbb = "333";
    return 0;
}
posted @ 2023-02-12 00:06  黄河大道东  阅读(27)  评论(0编辑  收藏  举报