当前位置: 首页 > news >正文

C++系列-const修饰的常函数

const修饰的常函数

  • 常函数
  • 常对象

常函数

  • 成员函数后加const,称为常函数。
  • 常函数内部不可以修改成员变量。
  • 常函数内可以改变加了mutable修饰的成员变量。
code:#include <iostream>using namespace std;class Horse{public:int age = 3;mutable string color = "white";//this 指针是一个指针常量, Horse * const this, 它指向的地址不可以修改, const Horse * const this, 则表示其空间的内容也不能修改void show_age() const		//常函数,const其实是用来修饰this指针的,表示this指向的内存空间的内容也不可以修改{//age = 5;				// 常函数中不能修改成员变量color = "black";		// 修饰当成员变量被mutable修饰后,常函数中可以修改cout << "it is " << age << endl;}};int main(){Horse horse1;horse1.show_age();system("pause");return 0;}
result:it is 3

常对象

  • 在声明对象前在const,常对象,常对象的内容不可以修改。
  • 常对象只能调用常函数。
  • 常对象可以修改mutable修饰的成员变量。
code:#include <iostream>using namespace std;class Horse{public:int age = 3;mutable string color = "white";//this 指针是一个指针常量, Horse * const this, 它指向的地址不可以修改, const Horse * const this, 则表示其空间的内容也不能修改void show_info() const		//常函数,const其实是用来修饰this指针的,表示this指向的内存空间的内容也不可以修改{//age = 5;				// 常函数中不能修改成员变量color = "black";		// 修饰当成员变量被mutable修饰后,常函数中可以修改cout << "it is " << age << endl;}void show_info_1(){//age = 5;				color = "black";cout << "it is " << age << endl;}};int main(){Horse horse1;horse1.show_info();const Horse horse2;			// 常对象内的内容不可以修改//horse2.age = 5;			// 常对象不能修改普通的成员变量horse2.color = "brown";		// 常对象可以修改mutable修饰的成员变量cout << horse2.age << endl;cout << horse2.color << endl;horse2.show_info();//horse2.show_info_1();		//常对象不能调用普通的成员函数,普通成员函数可以修改成员变量的值,而常对象对应的成员变量是不可以修改的,冲突,所以不能调用普通成员函数	system("pause");return 0;}
result:it is 33brownit is 3
http://www.lryc.cn/news/161947.html

相关文章:

  • fail-safe 机制与 fail-fast 机制
  • LLM 位置编码及外推
  • 第3章_瑞萨MCU零基础入门系列教程之开发环境搭建与体验
  • AI在医疗保健领域:突破界限,救治生命
  • centos7安装kubernets集群
  • 【多线程】线程安全与线程同步
  • 指针权限,new与delete,类与对象,函数模板,类模板的用法
  • Unity——脚本与序列化
  • NJ求职盘点
  • 01卡特兰数
  • 若依前端vue设置子路径
  • Vue中使用pdf.js实现在线预览pdf文件流
  • 态、势、感、知与时空、关系
  • D. Paths on the Tree
  • CocosCreator3.8研究笔记(九)CocosCreator 场景资源的理解
  • 大数据课程L1——网站流量项目的概述整体架构
  • 提升数据库安全小技巧,使用SSH配合开源DBeaver工具连接数据库
  • 信息安全技术概论-李剑-持续更新
  • java项目基于 SSM+JSP 的人事管理系统
  • 【Node.js】—基本知识点总结
  • Leetcode.174 地下城游戏
  • python实现adb辅助点击屏幕工具
  • 智能合约安全分析,针对 ERC777 任意调用合约 Hook 攻击
  • nodejs 爬虫 axios 异步爬虫 教程 【一】
  • Swift学习笔记三(Dictionary 篇)
  • javax.mail 遇到501 mail from address must be same as authorization user 的問題
  • 【Python】网络编程
  • 客户端开发常用框架
  • 数据分析综述
  • 区块链技术与应用 - 学习笔记2【密码学基础】