const修饰成员函数总结
const修饰成员函数有两个理由
1 让类的接口更容易理解,因为这可以方便程序员知道那个函数可以改变对象内容,而那个函数不能改。
2 让类能够操作const对象。
有一个非常重要的C++特性是
两个成员函数,如果只是常量性不同,他们可以重载。
常成员函数意味着什么?有两种流行的概念来解释:
bitwise 常量, 逻辑常量
bitwise 常量阵营认为,成员函数不改变对象的任何一个bit、然而。如果对象成员是指针,常成员函数不改变指针,却可以改变指针所指之物。
这种情况下,出现了逻辑常量。利用这一特性,我们可以在常成员函数内部,用mutable修饰需要改变的成员变量。改变其值。
同时,在常成员函数和非常成员函数中,不可避免的存在代码重复的问题,为此,我们在非常成员函数内,调用常成员函数。
但是,这一过程要做两次类型转换。第一次是,给*this加上const,然后调用常成员函数,接着,脱去常量性。因为是在非常成员函数中调用。
const修饰成员函数总结相关推荐
- C++基础08-this指针-const修饰成员函数-函数返回引用/值
一.this指针 1.C++类对象中的成员变量和成员函数是分开存储的.C语言中的内存四区模型仍然有效! 2.C++中类的普通成员函数都隐式包含一个指向当前对象的this指针. 3.静态成员函数.成员变 ...
- c/c++教程 - 2.4.3 this指针作用,链式编程思想,空指针访问成员函数,const修饰成员函数,常函数,常对象
目录 4.3 C++对象模型和this指针 4.3.1 成员变量和成员函数分开存储 4.3.2 this指针概念(非常重要) 4.3.3 空指针访问成员函数 4.3.4 const修饰成员函数 相关教 ...
- C++学习笔记(十)成员变量和成员函数分开存储、this指针、空指针访问成员函数、const修饰成员函数、友元
1.成员变量和成员函数分开存储 //1.在C++中,类内的成员变量和成员函数分开存储 //2.只有非静态成员变量才属于类的对象上 //空对象占用内存空间为:1 //C++编译器会给每个空对象也分配一个 ...
- C++ 常函数(const修饰成员函数)
常函数 const修饰成员函数 const修饰成员函数 常函数: 1.成员函数后加const后我们称这个函数为常函数. 2.常函数不可以修改成员属性. 3.成员属性声明时加关键字mutable后,在常 ...
- 类和对象—对象特性—const修饰成员函数
常函数: 成员函数后加const后我们称这个函数为常函数 常函数内不可以修改成员属性 成员属性声明时加关键词mutable 后在常函数中依然可以修改 常对象 声明对象前加 const称该对象为常对象 ...
- C++const修饰成员函数
C++全局函数做友元 常函数 常对象 示例 常函数 成员函数后加const后我们称为这个函数为常函数 常函数内不可以修改成员属性 成员属性声明时加关键字mutable后,在常函数中依然可以修改 常对象 ...
- 为什么不能同时用const和static修饰成员函数?
const修饰的函数: 表示在该函数体内不能修改成员的值,会在函数中添加一个隐式的参数const this*. static修饰的函数没有this指针,与const的用法冲突. 但可以使用static ...
- C++ const对成员函数的修饰 及 取地址及const取地址操作符重载
const对成员函数的修饰 将const修饰的类成员函数称之为const成员函数,const修饰类成员函数,实际修饰该成员函数隐含的this 指针,表明在该成员函数中不能对类的任何成员进行修改. 格式 ...
- const类型成员函数与mutable
const类型成员函数与mutable 原文:http://houhualiang.i.sohu.com/blog/view/42619368.htm const类型的成员函数是指使用const关 ...
最新文章
- CString初始化时提示字符串太大
- 五种方法查看Ubuntu/Redhat等Linux系统版本号等系统信息
- 技术人的灵魂 3 问,阿里工程师如何解答?
- ajax请求目标地址,AJAX功能目标
- java paint 怎么用_java如何使用paint方法画图
- 每日程序C语言25-查找100以内的素数
- SAP Spartacus 3.3.0 版本服务器端渲染的优化
- mysql如何管理空间_管理空间的mysql数据库
- qt自带静态代码检测工具_两款静态代码检测工具的对比
- [HNOI 2011]数学作业
- mybatis 调用存储过程
- Selenium应用代码(常见封装的方法二)
- java动作触发声音_关于鼠标动作的声音如何添加
- 【数值分析实验】线性代数方程组的直接解法:列主元高斯消去法、LU分解法、LU分解法求矩阵的逆(python)
- java获取CPU温度centos,用软件lm_sensors监测Linux系统和CPU温度
- 指数退避和AIMD为什么都青睐数字2
- 特殊符号大全复制_上榜!4.15特殊符号大全优美的制作网名符号案例分享,适合微信游戏昵称...
- JavaWeb HTML
- 瞧,他的代码,他的内裤
- 探索、松散结构,和大家谈谈关于社区的思考|shadow与mixlab的故事
热门文章
- C语言之如何理解指针的指针(九)
- android之修改gradle源
- sap原因代码配置路径_使用Visual Studio Code编写和激活ABAP代码 (上)
- axios 上传文件 封装_axios 封装【满足常规数据上传及file上传】
- cs python课程 加州大学_最新盘点!全球顶尖大学CS+数据科学的免费在线课程,共81个...
- 数学建模可以用python吗_Python中常用的数学建模Scipy
- CentOS 7 使用ip addr查询不到IP
- 用C++做一个通讯录管理系统(手把手教学)
- php原生判断,JavaScript
- java web接收tcp_Java多线程实现TCP网络Socket编程(C/S通信)