C ++语言一些可变的实例

时间:2010-03-13 11:52:43

标签: c++ const volatile mutable

有人可以在mutable函数中使用const关键字时显示mutable关键字用法的实时示例,并在实例中说明const和{{1}函数以及volatile成员和函数的差异。

3 个答案:

答案 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