c++教程:匿名函数

 时间:2026-02-14 01:54:50

1、匿名函数的基本语法为:[ 捕捉的值 ]( 参数 )->返回值 {  代码 }

例如

#include <iostream>

using namespace std;

int main()

{

    auto f = [](int a, int b)->int { return a+b;  };

    cout << f(1,2);

    return 1;

}

c++教程:匿名函数

2、什么是捕获的值那?我们逐条来介绍:

[ ] 试图在Lambda内使用任何外部变量都是错误的.

例如:

    int c = 1;

    auto f = [](int a, int b)->int { 

        a = c;

       return a+b;  

    };

    cout << f(1,2);

这个例子是编译不过的。

c++教程:匿名函数

3、[&]  用到的任何外部变量都隐式按引用捕获

#include <iostream>

using namespace std;

int main()

{

    int c = 1;

auto f = [&](int a, int b)->int { 

a = c;

c = 2;

return a+b;  

};

    cout << f(1,2) <<"," << c << endl;

    return 1;

}

这个例子编译过了,但是c的值被修改了。

c++教程:匿名函数

4、[=]  用到的任何外部变量都隐式按值捕获

例如:

#include <iostream>

using namespace std;

int main()

{

    int c = 1;

auto f = [=](int a, int b)->int { 

a = c;

c = 2;

return a+b;  

};

    cout << f(1,2) <<"," << c << endl;

    return 1;

}

给赋值会报错

c++教程:匿名函数

5、[=, &c]   c按引用捕获. 其它变量按值捕获

#include <iostream>

using namespace std;

int main()

{

    int c = 1;

    auto f = [=,&c](int a, int b)->int { 

        a = c;

        c = 2;

        return a+b; 

};

    cout << f(1,2) <<"," << c << endl;

    return 1;

}

c++教程:匿名函数

  • 怎么做香酥鸡蛋灌饼 ?
  • 魔域曙光1.0攻略
  • 天天象棋(腾讯中国象棋)残局闯关第28关
  • LabVIEW-数组-一维数组插值
  • 葬仙纪正式版隐藏密码隐藏专属怎么得
  • 热门搜索
    脚气是什么症状 高考是什么时候 什么是黄体破裂 空调买什么牌子好 什么像什么似的 有什么好玩的手游 卯是什么生肖 .dll是什么文件 给老师送什么花 奕是什么意思