lambda表达式案例分析
#include<iostream>
using namespace std;
int main()
{
int a = 10;
int b = 5;
auto add = [=](){
int b = 10;
return a + b;
};
int num = add();
cout << num << endl;
return 0;
}
针对上述代码,运行会出问题吗,会运行什么结果?
概念:lambda表达式实际上是一个匿名类的成员函数,该类由编译器为lambda创建,该函数被隐式地定义为内联。因此,调用lambda表达式相当于直接调用它的operator()函数,这个函数可以被编译器内联优化。
仿函数:又叫做函数对象,因为实现仿函数的方式就是重载一个类的operator(),只是用起来跟函数一样,其本质仍然是一个对象。
隐式捕获:
[=]表示以值捕获的方式捕获所有外部变量,成员函数包括this指针;
[&]表示以引用捕获的方式捕获所有外部变量,成员函数包括this指针。