美文网首页C++基础知识
关键字const(3)--mutable关键字

关键字const(3)--mutable关键字

作者: 安然_fc00 | 来源:发表于2017-03-21 19:48 被阅读0次

成员函数后面加const表示在该函数中不能对类的数据成员进行改变,比如:

class A{
private:
 int aa;
public:
 int x(){
 return aa++;
} //这可以
 int x() const{
 return aa++;
} //这错误
};

当然有特殊情况,就是用mutable关键字修饰过的成员变量可以在声明为const 函数中被改变。关于mutable:

关键字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;
  }

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

相关文章

  • 关键字const(3)--mutable关键字

    成员函数后面加const表示在该函数中不能对类的数据成员进行改变,比如: 当然有特殊情况,就是用mutable关键...

  • C++基础

    const关键字 const关键字标识常量,标明const右侧的变量(本质是常量)不可变。int const *b...

  • c++ supplement之可变数据成员

    之前没有接触到这个概念,其主要是要用到mutable关键字对变量进行修饰。即使该变量实在const函数中使用,其也...

  • mutable关键字

    mutalbe的中文意思是“可变的,易变的”,跟constant(既C++中的const)是反义词。 在C++中,...

  • Go入门7:常量 const

    const关键字 const variable type = value; 简单定义: const LENGTH ...

  • iOS中的static const extern关键字

    在iOS开发中会经常使用到static const extern3个关键字, 一直对这3个关键字很模糊, 这里总结...

  • 兼容问题

    六、const 问题firefox / chrome 可以使用const关键字或var关键字来定义常量但是ie下只...

  • golang学习笔记(三)数据类型

    1、iota 关键字 (1)iota 每一行加1(2)iota 遇到const关键字 重置为0(3)iota 每一...

  • const在C语言上的定义和用法

    我们经常可以在函数接口参数位置看到有const关键字,但是这个关键字到底有什么作用呢?其实const关键字的作用主...

  • js 中声明常量关键字 var、let、const

    js 中声明常量的关键字:var、let、const,其中 let 和 const 是 ES6 中新增的关键字。 ...

网友评论

    本文标题:关键字const(3)--mutable关键字

    本文链接:https://www.haomeiwen.com/subject/davgnttx.html