美文网首页
c++11系列-lambda表达式的实现

c++11系列-lambda表达式的实现

作者: z6ZKH4 | 来源:发表于2018-03-27 09:47 被阅读0次

c++增加了function对象,对所有的可调用对象的抽象表达:

  • 函数指针
  • lambda表达式
  • bind表达式
  • 函数对象(重写 operator ()的对象)

lambda的完全表达:

[捕获列表](形参表)mutable -> 返回值类型 {函数体}
  1. 捕获列表: 可选符号 = (拷贝捕获); &(引用捕获); this(引用捕获当前变量)
  2. 形参表: 函数的参数表
  3. mutable: 函数调用默认是按照const调用的,任何修改值类型的需要添加mutable
  4. 返回值类型
  5. 函数定义

实例:

function <int()> Counter(int inital = 0)
{
    int count = inital;
    return [count]() mutable -> int { return count++};
}

内部可能的实现,编译器会将lambda表达式转换成一个匿名的函数对象

class Counter
{
public:
    Counter(int _c) : count(_c) {};

    int operator()() const
    {
        return count++;
    }
private:
    mutable int count;
};

相关文章

  • c++11 新特性

    c++11的新特性 1.1 lambda表达式 lambda表达式讲解 例子1: 例子2: C++11中的Lamb...

  • C++ Lambda函数与表达式

    C++11 提供了对匿名函数的支持,称为 Lambda 函数(也叫 Lambda 表达式)。 Lambda 表达式...

  • Lambda函数与表达式

    C++11 提供了对匿名函数的支持,称为 Lambda 函数(也叫 Lambda 表达式)。Lambda表达式完整...

  • c++11 lambda表达式

    1 lambda表达式 C++11提供了对匿名函数的支持,称为Lambda函数(也叫Lambda表达式)。Lamb...

  • C++ lambda表达式与函数对象

    C++ lambda表达式与函数对象 lambda表达式是C++11中引入的一项新技术,利用lambda表达式可以...

  • C++ 匿名函数(lambda函数,lambda表达式)

    C++11提供了对匿名函数的支持,称为Lambda函数(也叫Lambda表达式). Lambda表达式具体形式如下...

  • C++11匿名函数

    [C++11] Lambda表达式 Lambda表达式是一个匿名函数。基本语法如下:[capture list] ...

  • C++中的Lambda表达式

    1.Lambda函数与表达式 C++11提供了对匿名函数的支持,称为Lambda函数(也叫Lambda表达式)。L...

  • Lambda表达式

    [](){}是一个C++11下的Lambda表达式(匿名函数),当然[]{}也是一个Lambda表达式。 Lamb...

  • 现代 C++:Lambda 表达式

    Lambda 表达式(Lambda Expression)是 C++11 引入的一个“语法糖”,可以方便快捷地创建...

网友评论

      本文标题:c++11系列-lambda表达式的实现

      本文链接:https://www.haomeiwen.com/subject/lcxtcftx.html