我最近在c++ 11中研究lambda函数。但是我不知道[=][&]之间是否有区别。如果有,区别是什么?

在这两种情况下,lambda主体中的this是否有任何区别?

最佳答案

区别在于如何捕获值

  • 通过引用
  • 捕获&
  • =按值捕获

  • 快速示例
    int x = 1;
    auto valueLambda = [=]() { cout << x << endl; };
    auto refLambda = [&]() { cout << x << endl; };
    x = 13;
    valueLambda();
    refLambda();
    

    此代码将打印
    1
    13
    

    第一个lambda在定义x的点按值捕获valueLambda。因此,它获得1的当前值。但是refLambda捕获了对本地的引用,因此可以看到最新的值

    09-04 02:45
    查看更多