QT---_lambda表达式

概念:C++11中的Lambda表达式用于定义并创建匿名的函数对象,以简化编程工作。

[capture](parameters) mutable->return-type{statement}

  1. [capture]是引出符,capture捕获列表,捕获的是那些到定义Lambda为止时Lambda所在作用范围内可见的局部变量。
  2. (parameters)参数列表,与普通函数的参数列表一致的。
  3.  mutable可修改标示符,按值传递函数对象参数时(默认仅读权限),加上mutable修饰符后,可以修改按值传递进来的拷贝(注意是能修改拷贝,而不是值本身)。
  4. ->return-type返回值类型。
  5. {statement}函数体,内容和普通函数一样。

注意:

  1. [  ]标识一个Lambda的开始,这部分必须存在,不能省略。
  2. (  )参数列表,如果不需要传递参数的话,()可以一同省略。
  3. 如果使用mutable,参数列表()不能省略的即使参数为空;如果使用mutable,修改拷贝,而不是值本身。
  4. 返回值类型,如果不需要,->return-type都可以进行省略。
  5. {函数体}可以使用参数列表,也可以使用捕获列表。

使用:

//    方式一:

     auto fun=[](){

        qDebug()<<"lambda 被输出打印";  //定义打印输出

    };

        fun();  //调用函数


//   方式二:

    []{
       qDebug()<<"lambada 被输出打印";
    }();

 打印输出实例:

    auto fun=[](int a,int b){
        qDebug()<<"lambda 被输出打印为";
        return a+b;
    };
    int sum=fun(100,200);
    qDebug()<<sum;
  1. 空         没有使用任何函数对象参数
  2. =           函数体内可以使用Lambda所在作用范围内所有可见的局部变量,值传递
  3. &           函数体内可以使用Lambda所在作用范围内所有可见的局部变量,引用传递
  4. a            将a按值进行传递
  5. &a          将a按引用进行传递
  6. this         函数体内可以使用Lambda所在类中的成员变量
  7. a,&b     将a按值进行住递,b按引用进行传递。
  8. =,&a,&b    除a和b按引用进行传递外,其他参数都按值进行传递
  9. n   &, a,b        除a和b按值进行传递外,其他参数都按引用进行传递。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值