有人可以展示mutable
关键字用法的实时示例,当它在const
函数中使用时,并在实时示例中解释mutable
andconst
函数以及volatile
成员和函数的区别。
问问题
1047 次
3 回答
6
您可以将 mutable 用于允许在 const 对象实例中修改的变量。这称为逻辑常量(与按位常量相反),因为从用户的角度来看,对象没有改变。
例如,您可以缓存字符串的长度以提高性能。
class MyString
{
public:
...
const size_t getLength() const
{
if(!m_isLenghtCached)
{
m_length = doGetLength();
m_isLengthCached = true;
}
return m_length;
}
private:
sizet_t doGetLength() const { /*...*/ }
mutable size_t m_length;
mutable bool m_isLengthCached;
};
于 2010-03-13T12:01:44.407 回答
1
您可以在跟踪通过 const 访问器访问 Class 成员的次数的计数器上使用 mutable。
于 2010-06-30T12:06:01.177 回答
1
我曾经用它来实现memoization。
于 2010-06-30T12:14:43.197 回答