您的位置:首页 > 编程语言 > C语言/C++

c++ lamda表达式的注意事项

2016-01-10 17:14 441 查看

延迟调用

lamda表达式使用值进行捕获时,捕获的是变量当时的值,是复制语义。如果该值在lamda表达式生成之后发生变化,lamda表达式中存储的值并不会发生变化。

int val = 25;
auto f = [val] {cout << "val=" << val << endl; };
val = 0;
f();//输出 val=25
cout <<"val="<<val << endl; //输出 val=0


如果希望lamda表达式能够获取捕获变量的即时变化,请使用引用方式进行捕获。

int val = 25;
auto ff = [&val] {cout << "val=" << val << endl; };
val = 0;
ff();//输出 val=0
cout << "val=" << val << endl; //输出 val=0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: