lambda表达式:
[](){}
[]捕获列表
() 函数的参数列表
{}函数的函数体
#include<iostream>
#include<string>
using std::cout;
using std::endl;
using std::string;
void func() {
cout << "hello func" << endl;
}
void test() {
int a = 100;
[]()->void {
cout << "hello" << endl;
}();
[&a]()->void {
++a;
cout << "hello" << a << endl;
}();
cout << "======a" << a << endl;
}
void test2() {
[](const string& name){
cout << "test2" << endl;
cout << "name = " << name << endl;
}("wangdao");
auto f = [](const string& name) {
cout << "test2" << endl;
cout << "name = " << name << endl;
};
f("wangd==");
typedef void(*pFunc)(const string&); // C
//using pFunc = void(const string&);
pFunc pf = [](const string& name) {
cout << "test2" << endl;
cout << "name = " << name << endl;
};
pf("wdwh");
}
int main() {
test2();
return 0;
}
int main() {
//test2();
int num = 10;
std::string str("wd");
[num, str](const string &value) {
cout << "num = " << num << endl;
cout << "str = " << str << endl;
cout << "str = " << value << endl;
}("hello");
// num采用引用传递,其他变量使用值传递
[=, &num](const string &value) {
cout << "num = " << ++num << endl;
cout << "str = " << str << endl;
cout << "str = " << value << endl;
}("hello");
// num采用值传递,其他变量使用引用传递
[&, num](const string &value) {
cout << "num = " << num << endl;
cout << "str = " << str << endl;
cout << "str = " << value << endl;
}("hello");
return 0;
}