赞
踩
#include<iostream>
using namespace std;
//mutable
int main00()
{
int a = 10;
//auto f = [a]() {
// return ++a;//[a]只是单纯的将a捕获住了,a的性质仍然为const,不能修改,所以报错。
// //如果想要修改a的值,需要加关键字mutable
//};
//按值捕获,所以内部的a无论如何修改都不会影响外面的值,所以a的值为10
auto f = [a]()mutable {//使用mutable捕获的时候,在匿名函数的作用于范围内,
//这个a是独自拥有的拷贝,和main函数里面的a不是同一份数据
//不会影响外部的a,维持的是自己的变量。
return ++a;
};
auto f2 = [a]()mutable {
return ++a;
};
cout << f() << endl;//11
cout << f2() << endl;//11,与上一个lambda表达式的a的值没有关系。
cout << f() << endl;//12
cout << f2() << endl;//12
cout << a << endl;//10
return 0;
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。