Design&Art

C++博客 首页 新随笔 联系 聚合 管理
  26 Posts :: 0 Stories :: 38 Comments :: 0 Trackbacks

关键字mutable是C++中一个不常用的关键字,他只能用于类的非静态和非常量数据成员
我们知道一个对象的状态由该对象的非静态数据成员决定,所以随着数据成员的改变,
对像的状态也会随之发生变化!
如果一个类的成员函数被声明为const类型,表示该函数不会改变对象的状态,也就是
该函数不会修改类的非静态数据成员.但是有些时候需要在该类函数中对类的数据成员
进行赋值.这个时候就需要用到mutable关键字了

例如:

class Demo
{
public:
    Demo()
{}
    
~Demo(){}
public:
    
bool getFlag() const
    
{
        m_nAccess
++;
        
return m_bFlag;
    }

private:
    
int  m_nAccess;
    
bool m_bFlag;
}


int main()
{
    
return 0;
}
 


编译上面的代码会出现 error C2166: l-value specifies const object的错误
说明在const类型的函数中改变了类的非静态数据成员.

这个时候需要使用mutable来修饰一下要在const成员函数中改变的非静态数据成员
m_nAccess,代码如下:

class Demo
{
public:
    Demo()
{}
    
~Demo(){}
public:
    
bool getFlag() const
    
{
        m_nAccess
++;
        
return m_bFlag;
    }

private:
    mutable 
int  m_nAccess;
    
bool m_bFlag;
}


int main()
{
    
return 0;
}
 

这样再重新编译的时候就不会出现错误了!
posted on 2007-04-12 10:50 安帛伟 阅读(304) 评论(0)  编辑 收藏 引用 所属分类: C++

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理