Item 10.const成员函数 (Meaning of a Const Member Function)
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)相关推荐
- const成员函数、const类对象、mutable数据成员
1. const成员函数 只是告诉编译器,表明不修改类对象. 但是并不能阻止程序员可能做到的所有修改动作,比如对指针的修改,编译器可能无法检测到 2. 类体外定义的const成员函数,在定义和声明处都 ...
- C++之const类成员变量,const成员函数
const修饰类的成员函数 const修饰变量一般有两种方式:const T *a,或者 T const *a,这两者都是一样的,主要看const位于*的左边还是右边,这里不再赘述,主要来看一下当co ...
- 成员函数对象类的const和非const成员函数的重载
首先声明,我是一个菜鸟.一下文章中出现技术误导情况盖不负责 1. 类的const成员函数与非const成员函数的载重 #include <iostream> #include <st ...
- 类与对象:类的6个默认成员函数: 构造函数、析构函数、拷贝构造函数、赋值操作符重载、默认拷贝构造与赋值运算符重载的问题、const成员函数、 取地址及const取地址操作符重载
1.类的6个默认成员函数 如果一个类中什么成员都没有,简称为空类.任何一个类在我们不写的情况下,都会自动生成下面6个默认成员函数. 构造函数 析构函数 拷贝构造函数 赋值操作符重载 const成员函数 ...
- C++中的const成员函数
文章目录 1 C++中的const成员函数 1.1 const成员函数的使用 1.2 同名的const成员函数和非const成员函数构成重载关系 2 mutable关键字 1 C++中的const成员 ...
- C++ 类的const成员函数
http://blog.csdn.net/wangshihui512/article/details/9823739 我们定义的类的成员函数中,常常有一些成员函数不改变类的数据成员,也就是说,这些函数 ...
- C++ this指针和const成员函数
this指针 this指针:成员函数通过一个名为this的隐式形参来访问调用它的那个对象.this由调用该成员函数的对象的地址初始化. 1 Sales_data total; 2 total.isbn ...
- const对象不能调用非const成员函数
在C++中,可以用const来定义一个const对象,但const对象不可以调用类中的非const成员函数 原因 引发原因:: 由调用成员函数时隐式传入的当前对象的this指针引起. 非const成员 ...
- C++ const对象与非const对象的相互调用、const成员函数与非const成员函数的相互调用
1)const对象可以调用非const成员函数吗? 答:不能.const修饰的对象实则修饰的是该对象的this指针,并且const修饰的成员不能进行修改,如果使用const调用非const成员函数,可 ...
- Item 16: 让const成员函数做到线程安全
本文翻译自modern effective C++,由于水平有限,故无法保证翻译完全正确,欢迎指出错误.谢谢! 博客已经迁移到这里啦 如果我们在数学领域里工作,我们可能会发现用一个类来表示多项式会很方 ...
最新文章
- Luogu P4105 [HEOI2014]南园满地堆轻絮
- Linux属于下面哪一种软件,【单选题】下面软件中属于自由软件开放源码的是( )。
A. Unix B. Linux C. Mi...
- GetWindowText和GetDlgItemText的区别
- docker镜像和容器区别
- 一套完整java项目 后台+管理+前端
- linuxoracle静默安装应答文件修改_巧用组策略分发软件—让IT不再手忙脚乱地奔走在各个工位安装软件...
- android dialog 隐藏状态栏_Flutter-最近搞了个项目-启动页Splash,Navigator.pop无法关闭Dialog...
- FLV格式解析及其解析器的实现
- 车辆管理系统python_python实现汽车管理系统
- EXCEL 利用随机数公式生成随机字母、随机密码
- 微博缓存视频导出自行解决方案
- DNS域名服务器的搭建
- 公鸡每只值5文钱,母鸡每只值3文钱,而三只小鸡值一文钱。用100文钱买100只鸡,问:公鸡,母鸡,小鸡各有多少只?
- 【刷题】LOJ 2863 「IOI2018」组合动作
- python udp socket远程主机强迫关闭_Python 远程主机强迫关闭了一个现有的连接
- [ITIL]-ITIL4考点考题
- python pdf书籍领取
- 英文网站更新自动采集工具
- 用python爬虫来登录深信服ac行为控制器,涉及到js加密部分,更新url分类库(针对企业微信更新)
- Java 性能笔记:自动装箱/拆箱
热门文章
- gstreamer向appsrc发送数据的代码
- NV12剪切区域时的对齐代码
- OPPO推送:推送消息的字串,用于参数
- 华为手机打开日志输出的几种方法
- C# 读写txt文件 写txt(IO) TXT追加
- activity 流程编辑器_最好用的流程编辑器bpmnjs系列之Viewer
- nodejs redis 发布订阅_Redis 发布/订阅(Pub/Sub)
- 性能服务器可以同时标注吗,服务器上有内存标注
- arcsde 10.2 for oracle 安装,ArcSDE 10.2 for Oracle 12C安装注意事项
- L2-001. 紧急救援(迪杰斯特拉算法)