该形式是C++中的lambda函数(匿名函数)
?
普通函数与lambda函数对比
匿名函数是许多编程语言都支持的概念,有函数体,没有函数名。
函数对象能维护状态,但语法开销大,而函数指针语法开销小,却没法保存范围内的状态。
?
基本lambda语法
基本形式如下:
[capture](parameters)->return-type {body}
?
[]叫做捕获说明符,表示一个lambda表达式的开始。接下来是参数列表,即这个匿名的lambda函数的参数,->return-type表示返回类型,如果没有返回类型,则可以省略这部分。最后就是函数体部分了。
我们可以这样输出"hello,world"
auto func = [] () { cout << "hello,world";?};
func(); //?now?call?the?function
?
变量捕获与lambda闭包实现
string name;
cin >> name;
[&](){cout << name;}();
?
lambda函数能够捕获lambda函数外的具有自动存储时期的变量。函数体与这些变量的集合合起来叫闭包。
?
?
?
?
cs