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

在C++中,mutable也是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。

我们知道,如果类的成员函数不会改变对象的状态,那么这个成员函数一般会声明成const的。但是,有些时候,我们需要在const的函数里面修改一些跟类状态无关的数据成员,那么这个数据成员就应该被mutalbe来修饰。

以下代码如果要在matest中进行修改m_a的值,就得在定义const A a,去掉const,并且在A类方法的声明时去掉const,但是mutable可以突破这层限制。

#include <iostream>using namespace std;class A
{public:A(int a):m_a(a){}void matest()const;void macout()const{cout << m_a << endl;}
private:int m_a;
};void A::matest() const
{//m_a = 10;//被const修饰的函数不允许修好任何类状态值(类里面的数据)cout << m_a << endl;
}int main()
{const A a(1);a.macout();//用const修饰的一个类使用一个const修饰的方法return 0;
}
#include <iostream>using namespace std;class A
{public:A(int a):m_a(a){}void matest()const;void macout()const{cout << m_a << endl;}
private:mutable int m_a;
};void A::matest() const
{m_a = 10;//在定义时用mutable来突破这层限制cout << m_a << endl;
}int main()
{const A a(1);a.macout();//用const修饰的一个类使用一个const修饰的方法return 0;
}

C++中mutable的用法相关推荐

  1. c++ 中mutable的用法

    multable虽然在日常的工作中很少用到,但是毕竟multable属于c++语法中的一个关键自所以,在大多数的面试中经常被提到,所以如果你要重新找工作了还是要了解这个关键字的 再了解multable ...

  2. C++中const关键字用法详解及实例和源码下载(一)

    最近在学习C++基础部分,看了两天书,已经看过了一遍,半知半解,回过头来重新看第二遍,深入了解一下C++的基础知识.现在读到了const关键字的用法,书上面讲解的时候并没有给出完整的实例,只是理论的讲 ...

  3. java 字符串用法_Java中的字符串用法小结

    本文实例总结了Java中的字符串用法.分享给大家供大家参考.具体分析如下: 字符串的本质是char类型的数组,但在java中,所有用双引号""声明的字符串都是一个String类的对 ...

  4. mysql中change用法,mysql 中alter的用法以及一些步骤

    mysql 中alter的用法以及一些方法 在用到alter的时间,查到了这个文章,就copy下来了,详细进入下面链接: MySQL之alter语句用法总结 1:删除列 ALTER TABLE [表名 ...

  5. mysql中正则表达式的用法_Mysql中正则表达式Regexp常见用法

    Mysql中Regexp常见用法 模糊匹配,包含特定字符串 # 查找content字段中包含"车友俱乐部"的记录 select * from club_content where ...

  6. 【C++】C/C++ 中 static 的用法全局变量与局部变量

    C/C++ 中 static 的用法全局变量与局部变量 目录 1. 什么是static? 1.1 static 的引入 1.2 静态数据的存储 2. 在 C/C++ 中static的作用 2.1 总的 ...

  7. php foreach嵌套foreach,php中foreach怎么嵌套foreach PHP中foreach函数用法?

    foreach的使用方法小编不是很明确,分享达人指教一下.foreach (array_expressforeach($array as $key) { if(xxxx) { break; //bre ...

  8. python中str的index什么意思_python中index的用法是什么

    index() 一般用处是在序列中检索参数并返回第一次出现的索引,没找到就会报错,比如:>>> t=tuple('Allen') >>> t ('A', 'l', ...

  9. php foreach是什么,php中foreach的用法是什么

    php中foreach的用法是:[foreach ($array as $value) {要执行代码;}],每进行一次循环,当前数组元素的值就会被赋值给$value变量,在进行下一次循环时,将得到数组 ...

最新文章

  1. 假赋值java_Java十四天零基础入门-Java赋值运算符
  2. 基站定位LAC,CID转经纬度
  3. String类中toCharArray()方法的用法
  4. 推荐一款万能抓包神器:Fiddler Everywhere
  5. 关于 SAP Spartacus 服务器端渲染 SSR 无法使用窗口宽度以进行自适应设计的问题
  6. php一句话后门学习(含免杀)
  7. Proximal Algorithms--Accelerated proximal gradient method
  8. AttributeError: type object ‘Image‘ has no attribute ‘open‘
  9. cdoj 1328 卿学姐与诡异村庄 Label:并查集 || 二分图染色
  10. Java Socket文件上传
  11. 解决SQL数据库无法附加
  12. 麻瓜编程python爬虫微专业_微专业:Python Web开发工程师(零基础课程),麻瓜编程侯爵主讲 价值2400元...
  13. 十二星座、超完美解析!
  14. 智能无感验证实战案例:神州优车
  15. Web前端HTML、CSS测试:世界地球日
  16. 计算机相关商标,计算机的商标是属于哪一类?
  17. 江恩 计算机,江恩计算器
  18. The absolute uri: [http://java.sun.com/jsp/jstl/core] cannot be reso site:blog.csdn.net
  19. request.setHeader() 方法
  20. Half a million dollars is or are a lot of money?

热门文章

  1. Android Studio无法启动问题解决
  2. 异步编程-Future
  3. 性别字段在数据库中存储数字,查询时,如何查询出数字对应的男和女?(case when的应用)
  4. 劳易测S20-P1C1-M20-FH安全开关
  5. 三子棋小游戏带你走进编程世界(c语言版)
  6. oracle revoke 列_Oracle常见授权与回收权限——grant和revoke
  7. Spring中常见的设计模式
  8. 12月云短信报告出炉,阿里云闯进前三
  9. 徐良汪苏泷解约恐赔千万 网友称:冰三尺非一日寒
  10. 常用的 jvm 调优的参数都有哪些?