Lambda 表达式本质是 C++ 类;编译器在编译期间将表达式翻译成类定义。
形式1
auto lambda = [](){};
lambda();
//等价于
class lambda {
public:
void operator()(){}
};
lambda();
形式2
传递参数
auto lambda = [](int age){};
lambda(18);
//等价于
class lambda {
public:
void operator()(int age){}
};
lambda(18);
形式3:
绑定参数
int b = 5;
auto lambda = [b](int x){};
lambda(15);
//等价于
class lambda {
public:
void operator()(){}
lambda(int b):mb(b){}
private:
int mb;
};
lambda lmda(33);
lmda(66);