mutable 是什么? 有什么作用?

Seu_why 2005-08-22 05:09:37
如题!
谢谢解答.
...全文
500 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Seu_why 2005-08-26
  • 打赏
  • 举报
回复
谢谢回答~
hewittlee 2005-08-23
  • 打赏
  • 举报
回复
用来释放const定义的数据变量的
lxk_cool 2005-08-22
  • 打赏
  • 举报
回复
可改变的,使数据在常函数中也可以被修改.
yhbttfile 2005-08-22
  • 打赏
  • 举报
回复
在多线程程序设计中,这个关键字大有用处。

如:
class A : public someinterface
{
private:
mutable mutext data_mutex;
// 需要保护的数据
public:
// 一些操作,返回数据的值的快照
};

这些操作一般是通过someinterface继承而来的,且定义成const属性。如果没有这个mutable,这些函数就比较难操作(除非使用const_cast)。

Jagen在路上 2005-08-22
  • 打赏
  • 举报
回复
这个关键字很有用阿,也体现了现实社会中哲学的否定之否定原理。有const就得有mutable。呵呵
可以用在const成员函数中被修改。
smjacky 2005-08-22
  • 打赏
  • 举报
回复
比如有一个类
class A
{
...
void func1() const //声明为 const
{
//在这里不能修改类的私有成员变量 a
//因为函数 func1 声明为 const
}
private:
int a;
}

但是在某些情况下,要修改 a ,但又不想改变 func1 的 const 属性
所以只好把 a 声明为 mutable
这样在 func1 里也可以访问修改 a 的值了
smjacky 2005-08-22
  • 打赏
  • 举报
回复
比如有一个类
class A
{
...
void func1() const //声明为 const
{
//在这里不能修改类的私有成员变量 a
//因为函数 func1 声明为 const
}
private:
int a;
}

但是在某些情况下,要修改 a ,但又不想改变 func1 的 const 属性
所以只好把 a 声明为 mutable
这样在 func1 里也可以访问修改 a 的值了
thomasnew 2005-08-22
  • 打赏
  • 举报
回复
就是说访问这个变量的时候不能直接从寄存器读取,要从内存来读
SammyLan 2005-08-22
  • 打赏
  • 举报
回复
谁说用处不大
用处大着呢
diandian82 2005-08-22
  • 打赏
  • 举报
回复
就是让数据在常函数中可以被修改
SammyLan 2005-08-22
  • 打赏
  • 举报
回复
多变的
用来定义类成员
使他可以在 ....Func(......)const类型的函数里面也可以修改
bugebear3 2005-08-22
  • 打赏
  • 举报
回复
mutable相对于const,如上例,加入mutable修饰后,就可以修改了,但好像实际用处不太,据说是C++中几个失败的关键字之一.
qhfu 2005-08-22
  • 打赏
  • 举报
回复
This keyword can only be applied to non-static and non-const data members of a class. If a data member is declared mutable, then it is legal to assign a value to this data member from a const member function.

For example, the following code will compile without error because m_accessCount has been declared to be mutable, and therefore can be modified by GetFlag even though GetFlag is a const member function.
// mutable.cpp
class X
{
public:
bool GetFlag() const
{
m_accessCount++;
return m_flag;
}
private:
bool m_flag;
mutable int m_accessCount;
};

int main()
{
}

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧