Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

mutable在c++中的作用

作者:思念的回忆   发布日期:2025-03-13   浏览:322

#include <iostream>
#include <vector>

class Example {
private:
    int value;
    mutable int cache;  // 可变成员变量

public:
    Example(int v) : value(v), cache(-1) {}

    int getValue() const {
        if (cache == -1) {  // 如果缓存未设置,则计算并存储
            cache = value * 2;
        }
        return cache;
    }

    void setValue(int v) {
        value = v;
        cache = -1;  // 当值改变时,重置缓存
    }
};

int main() {
    Example ex(10);
    std::cout << "Initial value: " << ex.getValue() << std::endl;

    ex.setValue(20);
    std::cout << "After setting new value: " << ex.getValue() << std::endl;

    return 0;
}

解释说明:

在这个示例中,mutable 关键字用于修饰类的成员变量 cache。通常情况下,当一个对象是常量(即使用 const 修饰的对象或方法),其成员变量不能被修改。但是,mutable 允许在常量方法中修改该成员变量。

  • getValue() 是一个常量成员函数,它不会修改对象的状态,但为了优化性能,我们希望它可以更新缓存 cache
  • setValue() 修改了对象的状态,并重置了缓存 cache,以便下次调用 getValue() 时重新计算。

通过这种方式,mutable 提供了一种机制,在不影响对象逻辑不变性的前提下,允许某些特定成员变量在常量方法中被修改。

上一篇:c++ count

下一篇:c++爬虫

大家都在看

c++闭包

c++单引号和双引号的区别

c++ 注释

c++如何判断素数

c++freopen怎么用

c++ 获取系统时间

c++进制转换函数

c++ tcp

c++ gcd函数

c++ cli

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站