Item 10. Meaning of a Const Member Function

1、何谓const成员函数:
  成员函数名字后面有个const

2、const成员函数与non-const成员函数的区别:
 区别在于成员函数中的那个看不见的this指针的类型:
 non-const成员函数里this的类型是 X* const,即一个指向不变的this指针
 const 成员函数里this的类型是const X * const,即一个在此成员函数里this的指向和类的内容都不能修改。

3、想让const成员函数修改非静态的数据成员怎么办?
  在非静态的数据成员前加上mutable 关键字

4、用const可以用来重载成员函数
class X {
  public:
    //...
    int &operator [](int index);
    const int &operator [](int index) const;
    //...
};

int i = 12;
X a;
a[7] = i; // this 为 X *const
const X b;
i = b[i]; // this 为 const X *const

转载于:https://www.cnblogs.com/wuwuwu/archive/2005/04/11/6335359.html

Item 10.const成员函数 (Meaning of a Const Member Function)相关推荐

  1. const成员函数、const类对象、mutable数据成员

    1. const成员函数 只是告诉编译器,表明不修改类对象. 但是并不能阻止程序员可能做到的所有修改动作,比如对指针的修改,编译器可能无法检测到 2. 类体外定义的const成员函数,在定义和声明处都 ...

  2. C++之const类成员变量,const成员函数

    const修饰类的成员函数 const修饰变量一般有两种方式:const T *a,或者 T const *a,这两者都是一样的,主要看const位于*的左边还是右边,这里不再赘述,主要来看一下当co ...

  3. 成员函数对象类的const和非const成员函数的重载

    首先声明,我是一个菜鸟.一下文章中出现技术误导情况盖不负责 1. 类的const成员函数与非const成员函数的载重 #include <iostream> #include <st ...

  4. 类与对象:类的6个默认成员函数: 构造函数、析构函数、拷贝构造函数、赋值操作符重载、默认拷贝构造与赋值运算符重载的问题、const成员函数、 取地址及const取地址操作符重载

    1.类的6个默认成员函数 如果一个类中什么成员都没有,简称为空类.任何一个类在我们不写的情况下,都会自动生成下面6个默认成员函数. 构造函数 析构函数 拷贝构造函数 赋值操作符重载 const成员函数 ...

  5. C++中的const成员函数

    文章目录 1 C++中的const成员函数 1.1 const成员函数的使用 1.2 同名的const成员函数和非const成员函数构成重载关系 2 mutable关键字 1 C++中的const成员 ...

  6. C++ 类的const成员函数

    http://blog.csdn.net/wangshihui512/article/details/9823739 我们定义的类的成员函数中,常常有一些成员函数不改变类的数据成员,也就是说,这些函数 ...

  7. C++ this指针和const成员函数

    this指针 this指针:成员函数通过一个名为this的隐式形参来访问调用它的那个对象.this由调用该成员函数的对象的地址初始化. 1 Sales_data total; 2 total.isbn ...

  8. const对象不能调用非const成员函数

    在C++中,可以用const来定义一个const对象,但const对象不可以调用类中的非const成员函数 原因 引发原因:: 由调用成员函数时隐式传入的当前对象的this指针引起. 非const成员 ...

  9. C++ const对象与非const对象的相互调用、const成员函数与非const成员函数的相互调用

    1)const对象可以调用非const成员函数吗? 答:不能.const修饰的对象实则修饰的是该对象的this指针,并且const修饰的成员不能进行修改,如果使用const调用非const成员函数,可 ...

  10. Item 16: 让const成员函数做到线程安全

    本文翻译自modern effective C++,由于水平有限,故无法保证翻译完全正确,欢迎指出错误.谢谢! 博客已经迁移到这里啦 如果我们在数学领域里工作,我们可能会发现用一个类来表示多项式会很方 ...

最新文章

  1. Luogu P4105 [HEOI2014]南园满地堆轻絮
  2. Linux属于下面哪一种软件,【单选题】下面软件中属于自由软件开放源码的是( )。 A. Unix B. Linux C. Mi...
  3. GetWindowText和GetDlgItemText的区别
  4. docker镜像和容器区别
  5. 一套完整java项目 后台+管理+前端
  6. linuxoracle静默安装应答文件修改_巧用组策略分发软件—让IT不再手忙脚乱地奔走在各个工位安装软件...
  7. android dialog 隐藏状态栏_Flutter-最近搞了个项目-启动页Splash,Navigator.pop无法关闭Dialog...
  8. FLV格式解析及其解析器的实现
  9. 车辆管理系统python_python实现汽车管理系统
  10. EXCEL 利用随机数公式生成随机字母、随机密码
  11. 微博缓存视频导出自行解决方案
  12. DNS域名服务器的搭建
  13. 公鸡每只值5文钱,母鸡每只值3文钱,而三只小鸡值一文钱。用100文钱买100只鸡,问:公鸡,母鸡,小鸡各有多少只?
  14. 【刷题】LOJ 2863 「IOI2018」组合动作
  15. python udp socket远程主机强迫关闭_Python 远程主机强迫关闭了一个现有的连接
  16. [ITIL]-ITIL4考点考题
  17. python pdf书籍领取
  18. 英文网站更新自动采集工具
  19. 用python爬虫来登录深信服ac行为控制器,涉及到js加密部分,更新url分类库(针对企业微信更新)
  20. Java 性能笔记:自动装箱/拆箱

热门文章

  1. gstreamer向appsrc发送数据的代码
  2. NV12剪切区域时的对齐代码
  3. OPPO推送:推送消息的字串,用于参数
  4. 华为手机打开日志输出的几种方法
  5. C# 读写txt文件 写txt(IO) TXT追加
  6. activity 流程编辑器_最好用的流程编辑器bpmnjs系列之Viewer
  7. nodejs redis 发布订阅_Redis 发布/订阅(Pub/Sub)
  8. 性能服务器可以同时标注吗,服务器上有内存标注
  9. arcsde 10.2 for oracle 安装,ArcSDE 10.2 for Oracle 12C安装注意事项
  10. L2-001. 紧急救援(迪杰斯特拉算法)