匿名函数lambda表达式是C++11的新功能,也是匿名函数的一种,
通过一个例子我们看一下表达式中的区别
#include <iostream>
#include <algorithm>
using namespace std;
int all_num=10;
int main(int argc,char** argv)
{
int num1=10,num2=20,num3=30;
auto lambda1=[]{
all_num=100;
num1=1;
num2=2;
num3=3;
cout<<num1<<" "
<<num2<<" "
<<num3<<endl;
};
lambda1();
cout<<all_num<<endl;
return 0;
}
在这种情况[ ]lambda 表达式是没有办法调用函数的局部变量的,如果编译会报错。
在第二种情况[=] lambda表达式是只能读局部变量,而不能修改局部变量,只能读写全局变量。
而采用引用的方式[&] lambda表达式是既可以读写局部变量也可以读写全局变量。
大家可以按照上面的简单程序就可以编译后看编译结果。