mutable的使用

简介: mutable的使用

当类的某个函数被声明为const,但是后期扩展又需要修改类的某个成员变量的时候。如果直接修改会报错:“表达式必须是可修改的左值”。此时可以在类成员变量前面添加mutable修饰,这样即使函数是const,但仍可以修改这个类成员变量。例子如下:

直接使用会报错:

class Test
{
public:
  void setData(const int data) const;
private:
  int _data;
};
void Test::setData(const int data) const
{
  _data = data;
}

修改后正常:

class Test
{
public:
  void setData(const int data) const;
private:
  mutable int _data;
};
void Test::setData(const int data) const
{
  _data = data;
}
相关文章
|
1月前
|
存储 JavaScript 前端开发
Set、Map、WeakSet 和 WeakMap 的区别
在 JavaScript 中,Set 和 Map 用于存储唯一值和键值对,支持多种操作方法,如添加、删除和检查元素。WeakSet 和 WeakMap 则存储弱引用的对象,有助于防止内存泄漏,适合特定场景使用。
|
4月前
|
存储 C++
【C++】string类的使用③(非成员函数重载Non-member function overloads)
这篇文章探讨了C++中`std::string`的`replace`和`swap`函数以及非成员函数重载。`replace`提供了多种方式替换字符串中的部分内容,包括使用字符串、子串、字符、字符数组和填充字符。`swap`函数用于交换两个`string`对象的内容,成员函数版本效率更高。非成员函数重载包括`operator+`实现字符串连接,关系运算符(如`==`, `<`等)用于比较字符串,以及`swap`非成员函数。此外,还介绍了`getline`函数,用于按指定分隔符从输入流中读取字符串。文章强调了非成员函数在特定情况下的作用,并给出了多个示例代码。
|
6月前
|
JavaScript 前端开发
Symbol有哪些常用的内置方法
Symbol有哪些常用的内置方法
|
6月前
|
C++ 容器
initializer_list初始化列表
initializer_list初始化列表
|
6月前
来及C++primer中的mutable
来及C++primer中的mutable
25 0
C#由Dictionary赋值引发的对引用类型使用的思考
C#由Dictionary赋值引发的对引用类型使用的思考
|
JavaScript 前端开发 安全
immutable及其常用用法
immutable及其常用用法
|
JavaScript Java
学习typeScript(weakMap,weakSet,set,map)
它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键,是一种更完善的 Hash 结构实现。如果你需要“键值对”的数据结构,Map 比 Object 更合适
128 0
|
编译器 C++
C++关键字--mutable
C++关键字--mutable
195 0
C++关键字--mutable