c++中lambda函数是作为c++11新特新添加到c++中的,其主要是以匿名函数捕获scope内变量的方式构造闭包(closure)。相关标准参考:c++ reference
下面以若干不相干的简短程序的方式总结一下lambda的基本使用方式(暂未涉及lambda的c++17/20的特性)
[lambda.h]
#include<iostream>
#pragma once
using namespace std;
void funcExt();
class Lamb{
private:
int aa =20;
int bb =30;
public:
Lamb();
~Lamb();
void show();
void f(){
auto fun10 = [this](){
this->show();};
fun10();
}
};
---------------------------------------------------------------------------------------------------------
[lambda_ext.cpp]
#include "lambda.h"
auto func =[](){cout<<"funcExt result."<<endl;};
void funcExt(){
func();
}
Lamb::Lamb(){};
Lamb::~Lamb(){};
void Lamb::show(){
cout<<aa+bb<<endl;
}
---------------------------------------------------------------------------------------------------------
[lambda.cpp]
// [ captures ] <tparams>(optional)(C++20) (params) specifiers(optional) exception attr
// -> ret requires(optional)(C++20) { body }
// tparams 模板形参列表,提供名称给泛型lambda的模板形参(c++20)
// specifiers [mutable/constexpr(c++17)]