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

来源:互联网 发布:js push 数组对象 编辑:程序博客网 时间:2024/06/06 09:30

延迟调用

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
0 0
原创粉丝点击