c++中lambda表达式的用法

#include <iostream>
using namespace std;

int main(){
    int a = 10;
    auto func1 = [=](int b){return a +b+ 1;};
    auto func2 = [&](int b,int c){return a+b+c + 1;};
    cout << func1(1) << endl;
    cout << func2(1,2) << endl;
    a++;
    cout << func1(1) << endl;
    cout << func2(1,2) << endl;
    return 0;
}

在“[]”包括起来的是捕捉列表,捕捉列表由多个捕捉项组成,并以逗号分隔。捕捉列表有以下几种形式:

1.[var]表示值传递方式捕捉变量var;
2.[=]表示值传递方式捕捉所有父作用域的变量(包括this);
3.[&var]表示引用传递捕捉变量var;
4.[&]表示引用传递方式捕捉所有父作用域的变量(包括this);
5.[this]表示值传递方式捕捉当前的this指针。

原文: https://blog.csdn.net/iloveyousunna/article/details/78532398

posted @ 2019-08-22 16:07  cicero  阅读(522)  评论(0编辑  收藏  举报