C++11 mutable

tech2022-09-01  114

#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; }

最新回复(0)