首页 > 其他 > 详细

mutable关键字

时间:2014-05-26 12:12:57      阅读:446      评论:0      收藏:0      [点我收藏+]

关键字mutable是C++中一个不常用的关键字,他只能用于类的非静态和非常量数据成员我们知道一个对象的状态由该对象的非静态数据成员决定,所以随着数据成员的改变,对像的状态也会随之发生变化!

如果一个类的成员函数被声明为const类型,表示该函数不会改变对象的状态,也就是该函数不会修改类的非静态数据成员.但是有些时候需要在该类函数中对类的数据成员进行赋值.这个时候就需要用到mutable关键字了。

bubuko.com,布布扣
class Demo
{
public:
    Demo(){}
    ~Demo(){}
public:
    bool getFlag() const
    {
        m_nAccess++; // 在const函数里试图修改,编译报错
        return m_bFlag;
    }
private:
    int  m_nAccess;
    bool m_bFlag;
};
bubuko.com,布布扣

编译上面的代码会出现 error C2166: l-value specifies const object的错误说明在const类型的函数中改变了类的非静态数据成员.这个时候需要使用mutable来修饰一下要在const成员函数中改变的非静态数据成员

加上mutable关键字,就不再报错了:

bubuko.com,布布扣
class Demo
{
public:
    Demo(){}
    ~Demo(){}
public:
    bool getFlag() const
    {
        m_nAccess++;
        return m_bFlag;
    }
private:
    mutable int  m_nAccess;
    bool m_bFlag;
};
bubuko.com,布布扣

这样再重新编译的时候就不会出现错误了!

不过我还是不明白,何苦如此,又想报错又不让报错,想来应该还有更深层次的原因,只是我没领悟到罢了。

转自:

http://www.cppblog.com/leetaolion/archive/2008/04/09/46586.html

mutable关键字,布布扣,bubuko.com

mutable关键字

原文:http://www.cnblogs.com/findumars/p/3746867.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!