当前位置:   article > 正文

C++11 mutable

c++11 mutable

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/332448
推荐阅读
相关标签
  

闽ICP备14008679号