int testClass::test()
{
auto getNum = [this](int a, int b){ return (a-b);};
int c = getNum(5, 4);
return c;
}
这是一个lambda表达式,等价于:
int anonymous_function(int a, int b)
{
return (a-b);
}
auto getNum = anonymous_function;
并且捕获了this指针,可以在这个闭包函数中使用this。
(){}中间有时会有->返回值类型:
auto plus = [] (int a, int b) -> int { return a + b; };
一般可以省略,编译器会推导出来。
后记:返回值一定要写,别让编译器推导。即使没有返回也要->void.
当函数体里有多个分支,有的返回,有的没有返回,就会出错。明确声明后,编译器会检查出错误。