mutable C++
时间: 2024-09-30 12:00:29 浏览: 14
在C++中,mutable是一个关键字,用于修饰类的数据成员,使其可以在常量对象上调用修改该数据成员的函数或方法。通常,如果一个数据成员被声明为const,那么在该对象作为常量引用传递给函数时,该数据成员是不允许被修改的。然而,如果将某个数据成员标记为mutable,即使对象本身是常量,也可以允许在其上进行修改。
例如:
```cpp
class MyClass {
public:
int value;
mutable int mutableValue; // 声明mutable值
void setValue(int v) {
value = v;
}
void setMutableValue(int v) const { // const在这里不影响mutableValue的修改
mutableValue = v;
}
};
int main() {
const MyClass c;
c.setValue(10); // 正常修改value
c.setMutableValue(20); // 修改mutableValue在const对象上也有效
}
```
相关问题
mutable c++
C++中的可变(mutable)关键字用于修饰类的成员变量,使其能够在常量成员函数中被修改。默认情况下,常量成员函数不允许修改类的成员变量,但是通过使用mutable关键字,可以在常量成员函数中修改被mutable修饰的成员变量。
下面是一个示例,演示了如何在C++中使用mutable关键字:
```cpp
class Example {
public:
Example() : count(0) {}
void increment() const {
mutableCount++; // 在常量成员函数中修改mutableCount
}
int getCount() const {
return count;
}
private:
mutable int mutableCount; // 使用mutable修饰的成员变量
int count;
};
int main() {
Example obj;
obj.increment();
int count = obj.getCount(); // 返回1,因为在常量成员函数中修改了mutableCount
return 0;
}
```
在上面的示例中,我们定义了一个名为Example的类,其中包含一个使用mutable修饰的成员变量mutableCount。在常量成员函数increment()中,我们可以修改mutableCount的值。在主函数中,我们创建了一个Example对象obj,并调用increment()函数来增加mutableCount的值。最后,我们调用getCount()函数来获取mutableCount的值,返回1。
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 ]