C++11 Lambda函数(匿名函数)-GCC 4.9编译通过

在这里插入图片描述

#include  <iostream>
using namespace std;
int main()
{
    int a = 5, b = 7;
    auto total = [](int x, int y)->int {return x + y; };    //接受两个参数
    cout << total(a, b)<<endl;  //12
    auto fun1 = [=] {return a + b; };   //值传递捕捉父作用域变量
    cout << fun1() << endl; //12
    auto fun2 = [&](int c) {b = a + c; a = 1; };    //省略了返回值类型,引用捕获所有
    fun2(3);    //1 8
    cout << a <<" "<< b << endl;
    a = 5; b = 7;   //被修改后,重新赋值
    auto fun3 = [=, &b](int c) mutable {b = a + c; a = 1; };    //以值传递捕捉的变量,在函数体里如果要修改,要加mutaple,因为默认const修饰
    fun3(3);
    cout << a << " " <<b<< endl;    //5,8
    a = 5; b = 7;   //被修改后,重新赋值
    auto fun4 = [=](int x, int y) mutable->int {a += x; b += y; return a + b; };//a、b在内部发生了变化,外部不受影响
    int t = fun4(10, 20);
    cout << t << endl;  //42
    cout << a <<" "<< b << endl;    //5 7
    return 0;
}

Output:

12
12
1 8
5 8
42
5 7
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值