3

有人可以展示mutable关键字用法的实时示例,当它在const函数中使用时,并在实时示例中解释mutableandconst函数以及volatile成员和函数的区别。

4

3 回答 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 回答