1、常函数

首先上代码:

class Person
{
public:void showPerson() const//函数后面用const修饰了{m_Age = 20;cout << "年龄:" << m_Age << endl;}int m_Age=18;string m_Name;
};int main()
{Person p1;p1.showPerson();
}

出现报错

在函数后面加了个const,这个函数就叫常函数,那就意味着这个函数不能够修改int string等普通类型的成员属性,这是因为const修饰了这个函数体内的this指针的指向,相当于 const Person *const this,其值和指向都不能够改变了。

但是如果在int string等普通类型的成员定义的时候在其前面+上 mutable 关键字修饰,那么这个常函数就可以和其他普通函数一样可以修改该成员的属性。如下:

mutable int m_Age;

2、常对象

我们重新定义一个p2对象,然后用const修饰了,可以看到,修改成员变量的时候,未+mutable 的m_Name成员变量出错了,而+mutable修饰的m_Age成员变量能编译通过。并且p2只能调用常函数,普通函数不能调用,即常对象和常函数是配套使用的。

C++中的常函数与常对象相关推荐

  1. C++中的常函数和常对象

    函数后加个const,相当于告诉编译器,该函数不会改变成员变量的值 常函数: 返回值 函数名() const{//在普通成员函数后面加上const就是常成员函数} 注意: 只有普通成员函数才能构成常函 ...

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

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

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

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

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

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

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

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

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

  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-Java可以对方法进行序列化?
  2. AdaBoost人脸检测原理
  3. ubuntu 安装mysql 后设置编码问题
  4. 前端学习(1772):前端调试之serverworkers的概念和方法二
  5. 面试官 | AJAX请求为什么不安全?
  6. 畅通工程续(HDU-1874)
  7. python检查_python – 检查属性是否存在的最佳方法是什...
  8. 【初赛】「阅读程序」题答v1.0
  9. 2018ICPC赛后总结
  10. u盘安装centos8故障failed to load ldlinux.c32
  11. 简账(开源记账软件)-后端环境简介及部署
  12. 酷派android.processa,酷派大神F2全网通(8675-A Android5.0)刷机教程图解,简单刷机
  13. 数字记忆好方法:数字编码
  14. 【低代码】云端组态集成与设备管理配置
  15. 【计算机网路-第四章】IP地址和子网掩码
  16. 资源网365,资源之家! 天天好资源!力争打造一个更好的资源网下载站.希望大家指教!...
  17. IDEA括起选中的选中的内容
  18. MySQL 亿级数据的迁移、清洗、与审计分析
  19. 如何输出Fix NVT交换的能量
  20. Day2-《青春有你2》选手信息爬取

热门文章

  1. 江西建材杂志江西建材杂志社江西建材编辑部2022年第11期目录
  2. SynaptiCAD.AllProducts.v19.00c windows32 64/linux32 64 SOLARIS(电子设计自动化工具集)
  3. 用手机来支付什么-支付的方式
  4. 灾害预警实时监控中心(大数据平台系列)
  5. vista系统服务器,Windows VISTA操作系统各发行版本详尽介绍
  6. MySQL的ODBC驱动下载及安装
  7. Leetcode 买卖股票的最佳时机
  8. java验证码去噪_论坛灌水机(续三 -- 验证码图形去噪)
  9. Oracle分页的俩种方法
  10. 破 AI 天网?马斯克脑机接口实现与猪连接