函数后加个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++中的常函数和常对象相关推荐

  1. 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修饰成员函数 相关教 ...

  2. C++常函数和常对象学习笔记

    C++常函数和常对象学习笔记 一.友元的概述 二.友元的语法 三.友元类 3.1 通过传入参数来访问类的私有成员 3.2 通过类内指针来访问类的私有成员 四.类的友元成员函数 五.友元类的注意 一.友 ...

  3. 常函数和常对象——c++

    文章目录 常函数和常对象 常函数 常对象 总结 常函数和常对象 常函数 this指针的本质:Person* const this 就是一个指针,const的含义就是他this指针不能更换指向的对象.但 ...

  4. C++(常函数、常对象)

    常函数.常对象 首先明确: 常函数不能修改成员变量(可以调用,不能修改) 想要修改成员变量,必须在成员变量前加mutable关键字 常对象只能调用常函数,但是普通对象既可以调用普通函数也可以调用常函数 ...

  5. php变量在html调用函数调用,PHP_如何在html标记中调用的函数里传递对象,最近使用jquery结合Ajax开发一个 - phpStudy...

    如何在html标记中调用的函数里传递对象 最近使用jquery结合Ajax开发一个中小型网站应用.在后台管理中要使用Ajax调用系统功能,根据Ajax的返回结果,使用jQuery对前台页面进行操作. ...

  6. C++中的常函数与常对象

    1.常函数 首先上代码: class Person { public:void showPerson() const//函数后面用const修饰了{m_Age = 20;cout << & ...

  7. C++基础知识(常函数和常对象)

    1.常函数  void func()  const {}  常函数 2.常函数  修饰是 this指针  const Type * const this 3.常函数  不能修饰this指针指向的值 4 ...

  8. C++编程——常函数与常对象

    文章目录 常函数: 成员函数后加const后我们称为这个函数为常函数 常函数内不可以修改成员属性 成员属性声明时加关键字mutable后,在常函数中依然可以修改 常对象: 声明对象前加const称该对 ...

  9. C++语法(二十)常函数、常对象

    1.常函数 常函数无法修改成员变量,除非这个成员变量用mutable修饰了. #include <iostream> using namespace std;class Person{ p ...

最新文章

  1. java 连nosql_浅谈 Java 中 MongoDB NoSQL数据库使用指南
  2. pika开源:替代WebPack的全新JS构建工具
  3. 去邵程程博客,得到很有喜感图片一张
  4. 构想:中文文本标注工具(内附多个开源文本标注工具)
  5. l启动进程 linux,《日子》. linux 查看进程启动路径
  6. phpcmsV9 QQ接入 - 线下phpsso应用管理 - 踩坑篇
  7. python123io如何编辑_计算机二级python学习教程(1) 教大家如何学习python
  8. SpringCloud工作笔记065---lombok的使用和原理_在开发工具STS_eclipse_Idea中集成lombok
  9. 8202v/8202ka/8202kd/8202rd 无线游戏手柄方案
  10. C#重绘TabControl控件的源码(转)
  11. 第一章 spss入门
  12. 一般人都不知道的功能强大的超级搜索引擎!!!!
  13. C++对象模型探索视频课程
  14. (全)Docker安装+人脸比对算法服务(win10)
  15. 一种获取公网ip地址并发送邮件至指定邮箱的实现方法
  16. 练习题:打印26个小写字母
  17. 发明神奇的理发店“魔镜”,可提前预览新发型!
  18. java打包把依赖也打进去_maven打包时把依赖的jar包打进去
  19. C51单片机,基于LCD液晶屏的简易时钟
  20. 验证码识别的原理python_蓝奏云数值验证码识别,python调用虹鱼图灵识别插件,超高正确率...

热门文章

  1. 阿里云服务器访问windows下网页(内网穿透)
  2. 【机器学习】强化学习算法的优化
  3. [CTF]-HECTF2021部分复现
  4. 关于Servlet的两种配置Web.xml文件配置或者使用(@WebServlet(name = ,urlPatterns = ))配置问题——WebServlet注解
  5. ティラミス / 龙枪
  6. 和女友一起学技术,她去了字节,我去了华为
  7. 压缩软件如何删除压缩包密码(zip、rar、7-zip),忘记密码如何删除密码?
  8. 前端小程序,h5,浏览器,app, doc,.docx,.ofd,.PDF,.WPS以及Office文档的在线解析预览方式
  9. 我喜欢的photo,images....
  10. java学习(方法)