int aa=0;
auto funaa =[=](){return aa;};
aa=+1;
qDebug()<<"funaa"<<funaa();
结果输出为:
funaa 0
原因分析: 在funaa定义的时候[=] 是捕获外部作用域中的所有变量,并作为副本在函数体中使用。在定义的瞬间,已经完成了捕获动作, aa的值已经复制到funaa 函数体中。 后面对aa的修改不会 影响到funaa 当时捕获到的值。所以funaa 返回的仍然是0;
当想要在调用funaa时即时获取外部变量aa的值,应该用引用捕获 [&]。
int bb=0;
auto funbb =[&](){return bb;};
bb=+1;
qDebug()<<"funbb"<<funbb();
结果输出为:
funbb 1