- Lambda表达式是C++11时引入的特性
- Lambda表达式又被称为匿名函数
- 在句中声明定义的没有名字的无名函数,只有在调用的时候才会创建函数对象
- Lambda本质是一个特殊的,匿名的类类型。它是一个带有operator()的类,即仿函数
- 仿函数(functor),就是使一个类的使用看上去像一个函数。其实现就是类中实现一个operator(),这个类就有了类似函数的行为,就是一个仿函数类了
#include<iostream>
using namespace std;
class AddNum
{
public:
AddNum(int num):_num(num){};
//成员函数
int addNum(int x)const
{
return _num + x;
}
//仿函数
int operator()(int x)const
{
return _num + x;
}
private:
int _num;
};
int main()
{
auto add_num = AddNum(10);
//成员函数调用
auto x = add_num.addNum(5);
//仿函数调用
auto x = add_num(5);
//------------------------------------------------------------------//
//lambda
auto add_num2 = [add_num = 10](int x){return add_num + x;};
auto lambda_x = add_num2(5);
}