c++ mutable
时间: 2023-10-18 18:02:55 浏览: 87
在 C++ 中,关键字 `mutable` 用于修饰成员变量,它的作用是允许被修饰的成员变量在 const 成员函数中被修改。
在一个 const 成员函数中,所有的成员变量都不能被修改,但如果某个成员变量被声明为 mutable,那么它在 const 成员函数中就可以被修改。
下面是一个示例:
```
class MyClass {
public:
void constFunc() const {
// 可以读取不可修改的成员变量
int a = m_a;
// 但不能修改成员变量 m_a
// 如果 m_b 被声明为 mutable,那么就可以修改
m_b = 10;
}
private:
int m_a;
mutable int m_b;
};
```
需要注意的是,mutable 成员变量的修改只能在 const 成员函数中进行,而在非 const 成员函数中,所有的成员变量都可以被修改,无论是否被声明为 mutable。
相关问题
C++ mutable
在C++中,关键字mutable用于突破const的限制。被mutable修饰的变量将永远处于可变的状态,即使在一个const函数中,也可以修改mutable成员。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [C++ Mutable](https://blog.csdn.net/weixin_39640298/article/details/119391997)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *3* [C++之 mutable](https://blog.csdn.net/yyxyong/article/details/77939866)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
c++ mutable关键字
mutable关键字是C++中的一个少用的关键字,它的作用是允许在const成员函数中修改被声明为mutable的成员变量。当一个类的成员变量不能修改时,我们在其声明处前添加const关键字进行修饰。但是,如果这个成员变量是可变的,那我们就使用mutable关键字修饰变量类型。下面是一个使用mutable关键字的例子:
```c++
class OutTestClass {
public:
OutTestClass() {
count = 0;
msg = "Hello, World!";
}
public:
void print() const {
std::cout << msg << std::endl;
++count;
}
private:
mutable int count; // mutable关键字修饰的成员变量
std::string msg;
};
```
在上面的例子中,count被声明为mutable,因此即使在const成员函数print()中,也可以对count进行修改。这在某些情况下非常有用,例如在一个const成员函数中需要对某些状态进行统计。
另外,引用中的代码是在输出a.getCount()的值,其中getCount()是一个成员函数,但是由于它没有修改任何成员变量,因此可以被声明为const成员函数。在const成员函数中,只能访问被声明为mutable的成员变量。
阅读全文