C++中的常函数和常对象
函数后加个const,相当于告诉编译器,该函数不会改变成员变量的值
- 常函数:
返回值 函数名() const{//在普通成员函数后面加上const就是常成员函数}
- 注意:
- 只有普通成员函数才能构成常函数,构造函数,静态成员函数,析构函数,全局函数都不能构成常函数。
- 常函数中的this指针是常指针,不能在常成员函数中修改成员变量的值。
- 常成员函数可以修改用mutable修饰的成员变量
- 非常对象可以调用常函数,但是常对象只能调用常函数,不能调用其他任何函数。
- 函数名和形参都相同的 常函数和非常函数构成重载,常对象调用常函数,非常函数调用非常函数。
class Person
{
public:Person(int aa){this->aa = aa; //this指针,解决名称冲突}void aaa() const //常函数{this->aa++;}//mutable 修饰的变量在常函数中可以修改,也可以在常对象中修改mutable int aa;
};
int main()
{Person p4(1);p4.aaa(); //非常对象也可以调用常函数const Person p5(12);p5.aaa(); //常对象只能调用常函数
}
- 常对象:
类名 const 对象名(初始化);const 类名 对象名(初始化);
//这二者等效,都是常对象。
- 注意
- 如果一个对象被声明为常对象,则不能调用该对象的非const成员函数
- 常对象只能调用类中的常函数和mutable修饰的变量,其他的变量和函数均无法修改。
C++中的常函数和常对象相关推荐
- 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++常函数和常对象学习笔记
C++常函数和常对象学习笔记 一.友元的概述 二.友元的语法 三.友元类 3.1 通过传入参数来访问类的私有成员 3.2 通过类内指针来访问类的私有成员 四.类的友元成员函数 五.友元类的注意 一.友 ...
- 常函数和常对象——c++
文章目录 常函数和常对象 常函数 常对象 总结 常函数和常对象 常函数 this指针的本质:Person* const this 就是一个指针,const的含义就是他this指针不能更换指向的对象.但 ...
- C++(常函数、常对象)
常函数.常对象 首先明确: 常函数不能修改成员变量(可以调用,不能修改) 想要修改成员变量,必须在成员变量前加mutable关键字 常对象只能调用常函数,但是普通对象既可以调用普通函数也可以调用常函数 ...
- php变量在html调用函数调用,PHP_如何在html标记中调用的函数里传递对象,最近使用jquery结合Ajax开发一个 - phpStudy...
如何在html标记中调用的函数里传递对象 最近使用jquery结合Ajax开发一个中小型网站应用.在后台管理中要使用Ajax调用系统功能,根据Ajax的返回结果,使用jQuery对前台页面进行操作. ...
- C++中的常函数与常对象
1.常函数 首先上代码: class Person { public:void showPerson() const//函数后面用const修饰了{m_Age = 20;cout << & ...
- C++基础知识(常函数和常对象)
1.常函数 void func() const {} 常函数 2.常函数 修饰是 this指针 const Type * const this 3.常函数 不能修饰this指针指向的值 4 ...
- C++编程——常函数与常对象
文章目录 常函数: 成员函数后加const后我们称为这个函数为常函数 常函数内不可以修改成员属性 成员属性声明时加关键字mutable后,在常函数中依然可以修改 常对象: 声明对象前加const称该对 ...
- C++语法(二十)常函数、常对象
1.常函数 常函数无法修改成员变量,除非这个成员变量用mutable修饰了. #include <iostream> using namespace std;class Person{ p ...
最新文章
- java 连nosql_浅谈 Java 中 MongoDB NoSQL数据库使用指南
- pika开源:替代WebPack的全新JS构建工具
- 去邵程程博客,得到很有喜感图片一张
- 构想:中文文本标注工具(内附多个开源文本标注工具)
- l启动进程 linux,《日子》. linux 查看进程启动路径
- phpcmsV9 QQ接入 - 线下phpsso应用管理 - 踩坑篇
- python123io如何编辑_计算机二级python学习教程(1) 教大家如何学习python
- SpringCloud工作笔记065---lombok的使用和原理_在开发工具STS_eclipse_Idea中集成lombok
- 8202v/8202ka/8202kd/8202rd 无线游戏手柄方案
- C#重绘TabControl控件的源码(转)
- 第一章 spss入门
- 一般人都不知道的功能强大的超级搜索引擎!!!!
- C++对象模型探索视频课程
- (全)Docker安装+人脸比对算法服务(win10)
- 一种获取公网ip地址并发送邮件至指定邮箱的实现方法
- 练习题:打印26个小写字母
- 发明神奇的理发店“魔镜”,可提前预览新发型!
- java打包把依赖也打进去_maven打包时把依赖的jar包打进去
- C51单片机,基于LCD液晶屏的简易时钟
- 验证码识别的原理python_蓝奏云数值验证码识别,python调用虹鱼图灵识别插件,超高正确率...
热门文章
- 阿里云服务器访问windows下网页(内网穿透)
- 【机器学习】强化学习算法的优化
- [CTF]-HECTF2021部分复现
- 关于Servlet的两种配置Web.xml文件配置或者使用(@WebServlet(name = ,urlPatterns = ))配置问题——WebServlet注解
- ティラミス / 龙枪
- 和女友一起学技术,她去了字节,我去了华为
- 压缩软件如何删除压缩包密码(zip、rar、7-zip),忘记密码如何删除密码?
- 前端小程序,h5,浏览器,app, doc,.docx,.ofd,.PDF,.WPS以及Office文档的在线解析预览方式
- 我喜欢的photo,images....
- java学习(方法)