码迷,mamicode.com
首页 > 编程语言 > 详细

C++11常用特性介绍——Lambda表达式

时间:2019-12-02 23:20:17      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:c++   常用   auto   表达式   include   UNC   引用传递   this指针   成员   

一、C++11采用配对的方括号[]来创建一个匿名函数并执行,如:

  #include <iostream>

  int main()

  {

    auto func = []{

      std::cout << "hello world!!!" << std::endl;

    };

    func();

  }

  捕获选项:

  1)[]:不捕获任何变量(没有使用任何函数对象参数)。

  2)[=]:拷贝捕获(函数体内可以使用Lambda所在作用范围内所有可见局部变量,包括Lambda所在类的this,并且是值传递方式,函数体内不可以修改局变量)。

  3)[&]:引用捕获(函数体内可以使用Lambda所在作用范围内所有可见局部变量,包括Lambda所在类的this,并且是引用传递方式,函数体内可以修改局变量)。

  4)[this]:捕获this指针(函数体内可以使用Lambda所在类中的成员变量)。

  5)[a]:指定拷贝(将变量a按值进行传递,函数体内不能修改传递进来的a拷贝,因为默认情况下函数是const的,修改传递进来的a拷贝,可以添加mutable修饰符)。

  6)[&a]:指定引用(将a按引用进行传递,函数体内可以修改传递进来的bar拷贝)。

  7)[a,&b]:混合引用(将a按拷贝传递,b按引用传递)。

  8)[=,&a]:混合引用(将其它可见局部变量按拷贝传递,b按引用传递)。

  9)[a,&]:混合引用(将a按拷贝传递,其它可见局部变量按拷贝传递)。

C++11常用特性介绍——Lambda表达式

标签:c++   常用   auto   表达式   include   UNC   引用传递   this指针   成员   

原文地址:https://www.cnblogs.com/zhangnianyong/p/11973659.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!