lambda表达式

学习qt的时候遇到了lambda表达式(之前偷懒没去看),补一下:

lambda表达式出现的意义:实际上就是匿名函数(没有函数名的函数,无法在表达式之外调用),在写代码的时候不可能面面俱到把一些简单的函数从声明到实现完整地写出来,费时费力不讨好,因此需要匿名函数来干这事儿。

格式:

[] () {}();
第一个方括号表明是匿名函数(类似于一种格式吧,固定的)
第二个圆括号既是参数列表
第三个中括号放函数体
第四个圆括号放实参

  基本格式就是这样,除此之外,第一个方括号还有其他功能。

  • [ = ] 捕获(scope)先前的变量,按照传值的方式传入lambda函数体中
  • [ & ]按照传引用的方式
  • [ = , &x ] x按照传引用的方式,其他变量按照传值的方式。

ps:如果用传值的方式传入周围变量,但是在函数体内又改变了这个变量,则需要在第二个圆括号后加入

(para.)->mutable

 另外,返回类型是lambda表达式自己确定的,如果需要强制转换,同样在第二个圆括号后面加上

-><return_type>    //mutable写在这之前

  

 这里加个传送门,写的不错的一篇相关博文:https://www.devbean.net/2012/05/cpp11-lambda/

posted @ 2019-05-09 15:37  jckcoenf  阅读(139)  评论(0编辑  收藏  举报