有人可以在mutable
函数中使用const
关键字时显示mutable
关键字用法的实时示例,并在实例中说明const
和{{1}函数以及volatile
成员和函数的差异。
答案 0 :(得分:6)
您可以对允许在const对象实例中修改的变量使用mutable。这称为逻辑常量(与按位常量相反),因为对象从用户的角度来看没有改变。
例如,您可以缓存字符串的长度以提高性能。
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;
};
答案 1 :(得分:1)
您可以在计数器上使用mutable来跟踪通过const访问器访问Class成员的时间。
答案 2 :(得分:1)
我用过一次来实现memoization。