C++中const关键字的多种用法

在C++中,const 是一个关键字,用于声明常量。它可以用于多种情况,包括声明常量变量、常量指针、以及成员函数中的常量性。

1.常量变量

通过在变量声明前加上 const 关键字,可以创建一个不可修改的常量。

例如:

const int x = 10;

2.常量指针

const 还可以用于声明指向常量的指针,这意味着指针所指向的值不能被修改,但指针本身可以被修改。例如:

int y = 5;
const int *ptr = &y;

在这个例子中,ptr 是一个指向常量整数的指针,因此不能通过 ptr 来修改 y 的值,但可以通过其他途径修改 y

3.常对象 const

1) 常函数中的 this 是被 const 修饰的,在常函数中成员变量不能被修改 ;
2) 常函数只能调用常函数;
语法:在成员函数后面加const关键字
示例:
#include <iostream>
using namespace std;
class Person
{int age;
public:Person(){}Person(int a):age(a){}//常函数:1.不可以改变成员变量的值 2.常函数只能调用常函数void show() const{//++age;值不可以修改cout<<age<<endl;setAge(25);}void setAge(int a) const{//age = a;值不可以修改cout<<age<<endl;}
};int main(int argc, const char *argv[])
{Person p(1);p.show();return 0;
}

4.常对象 

语法:1.const 类名 对象名 ( 实参 )
           2.类名 const 对象名 ( 实参 )
注意常对象:
(1) 成员变量必须有初值
(2) 只能调用常成员函数
功能:希望对象所有成员的值不被修改
示例:
#include <iostream>
using namespace std;
class Person
{int age;
public:Person(){}Person(int a):age(a){}/*void show() const //常函数:1.不可以改变成员变量的值{cout<<"const....."<<age<<endl;}*/void show()//自由的函数{cout<<"show..."<<age<<endl;}
};int main(int argc, const char *argv[])
{Person p(1);//1.自由的对象首选调用自由的函数,没有自由的函数,可以调用常函数p.show();const Person p1(10);//2.常对象:只能调用常函数,不能调用自由的函数Person const p2(20);p1.show();return 0;
}

5.对比

* 普通对象: 1. 可以调用常函数
* 2. 普通函数和常函数可以构成函数的重载(特殊的重载)
* 3. 普通函数和常函数同时存在时,普通的对象调用自由的函数
*
* 常对象: 1. 只能调用常函数 , 不能调用自由的函数
* 2. 注意:成员变量要有初值

6.mutable 关键字

作用:mutable 修饰的成员变量可以在常函数中修改。
示例:
#include <iostream>
using namespace std;
class Person
{
private:string name;int age;mutable int a;
public:Person(int age,string name,int a):age(age),name(name),a(a){}void show(){cout<<age<<" "<<name<<endl;}void show() const{++a;cout<<age<<"$$$"<<name<<" "<<a<<endl;}
};int main()
{Person p(20, "小明",10);p.show();const Person p2(30, "小强",10);p2.show();
}

以上就是const的基本用法,本次代码分享到此结束,谢谢大家观看,希望大家点点赞,点点关注,谢谢大家!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/810082.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何解决mysql死锁问题

为什么会产生死锁 Innodb 引擎为了解决「可重复读」隔离级别下的幻读问题&#xff0c;就引出了 next-key 锁。它是记录锁和间隙锁的组合。 Record Lock&#xff0c;记录锁&#xff0c;锁的是记录本身&#xff1b; Gap Lock&#xff0c;间隙锁&#xff0c;锁的就是两个值之间的…

Vue笔记 2

数据代理 数据代理&#xff1a;通过一个对象代理对另一个对象中属性的操作&#xff08;读/写&#xff09; let obj{x:100} let obj2{y:200} Object.defineProperty(obj2,x,{get(){return obj.x},set(value){obj.x value} })Vue中的数据代理 Vue中的数据代理&#xff1a; 通…

【算法】环形链表 - 遍历/双指针

题目 给定一个链表&#xff0c;判断链表中是否有环&#xff0c;并返回结果。 原理 遍历 声明一个Set&#xff0c;遍历链表放入Set&#xff0c;如果放入失败&#xff0c;说明有环。 双指针 声明一个快指针和一个慢指针&#xff0c;快指针每次移动两步&#xff0c;慢指针移…

MySQL学习笔记(三)

1、insert插入多条数据 语法&#xff1a;insert into t_user(字段名1,字段名2...) values(值1,值2...),(值1,值2...),(值1,值2...)...; 2、快速创建表 原理&#xff1a;将一个查询结果当做一张表创建&#xff0c;可以完成表的快速复制。表创建出来&#xff0c;同时表中的数据…

【计算机毕业设计】——农产品销售系统——后附源码

&#x1f389;**欢迎来到我的技术世界&#xff01;**&#x1f389; &#x1f4d8; 博主小档案&#xff1a; 一名来自世界500强的资深程序媛&#xff0c;毕业于国内知名985高校。 &#x1f527; 技术专长&#xff1a; 在深度学习任务中展现出卓越的能力&#xff0c;包括但不限于…

✔ ★Java项目——设计一个消息队列(二)

Java项目——设计一个消息队列 四. 项⽬创建五. 创建核⼼类创建 Exchange&#xff08;名字、类型、持久化&#xff09;创建 MSGQueue&#xff08;名字、持久化、独占标识&#xff09;创建 Binding&#xff08;交换机名字、队列名字、bindingKey用于与routingKey匹配&#xff09…

LLMs之ToolAlpaca:ToolAlpaca(通用工具学习框架/工具使用语料库)的简介、安装和使用方法、案例应用之详细攻略

LLMs之ToolAlpaca&#xff1a;ToolAlpaca(通用工具学习框架/工具使用语料库)的简介、安装和使用方法、案例应用之详细攻略 目录 ToolAlpaca的简介 0、《ToolAlpaca: Generalized Tool Learning for Language Models with 3000 Simulated Cases》翻译与解读 1、数据集列表 2…

前端代码规范 - 图片相关

本文是前端代码规范系列文章&#xff0c;将涵盖前端领域各方面规范整理&#xff0c;其他完整文章可前往主页查阅~ 在前端项目中&#xff0c;图片资源是构成网站视觉效果的重要元素。合理的图片使用规范不仅可以提高页面加载速度&#xff0c;还可以增强用户体验。本文将详细介绍…

基于arcgis /envi PCA(主成分分析)实现过程

基于arcgis /envi PCA(主成分分析)实现过程 1 提取研究范围 2对研究范围进行重采样 &#xff08;根据数据情况进行选做&#xff0c;如数据较大建议进行该步骤操作&#xff09; 3 对研究范围内数据进行归一化处理 4 将空值替换为0 5 对同期不同要素数据进行波段合成 对波段…

易备数据备份软件案例:昆山某电子元器件制造企业灾备方案

昆山某电子有限公司专注于生产和销售高品质的电子元器件&#xff0c;包括各种电容器、电感线圈、电阻器、二极管、晶体管等。产品广泛应用于各种电子设备和行业&#xff0c;包括&#xff1a;消费电子、通信设备、工业控制、汽车电子、航空航天、医疗器械等。 随着公司生产经营…

Yii2 路由美化访问需要加s

不得不说yii真是反人类&#xff0c;怪不得现在都不维护了&#xff0c;今天解析下路由美化下的路由访问问题。 设置main.php配置文件 urlManager > [enablePrettyUrl > true, // 启用 URL美化showScriptName > false, // 隐藏入口文件index.phpenableStrictParsing…

MySql数据库从0-1学习-第三天多表设计学习

项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也存在着各种联系,基本上分为三种: 一对多(多对一)多对多一对一 一对多 需求:根据需求,完成部门和员工表的设计 一对多,很多人会使用外键,…

如何分析 Java 开源项目源码?

准备深入分析一个 Java 开源项目的源码时&#xff0c;可以通过下面这些步骤和技巧&#xff0c;更系统地理解和分析项目源代码&#xff1a; 1. 确定分析目标和范围&#xff1a; 在开始分析之前&#xff0c;明确你的目标&#xff0c;确定你要深入了解的功能或模块。这有助于你有…

零基础转行网络安全,高薪梦想可以实现吗?

零基础转行网络安全&#xff0c;学会网络安全相关知识&#xff0c;可以从事以下岗位&#xff1a; 1、安全运维&#xff1a; 负责服务器及终端设备的维护 负责业务的安全风险评估和漏洞挖掘 负责安全事件的检查和实施 2、渗透测试 负责渗透测试、风险评估工作的实施 提供…

《web应用技术》第三次课后练习

实验目的&#xff1a; 1、springboot入门程序撰写并启动 2、使用postman练习参数的获取。 参考&#xff1a;Day04-10. Web入门-SpringBootWeb-快速入门_哔哩哔哩_bilibili

【星期计算】蓝桥杯

–> 因为这里是结果填空题&#xff0c;我们直接暴力用java自带的BigInteger类。 /*** 试题 A: 星期计算** 本题总分&#xff1a;5 分* 【问题描述】* 已知今天是星期六&#xff0c;请问20的22次方天后是星期几&#xff1f;* 注意用数字 1 到 7 表示星期一到星期日。* * 【答…

2024年在阿里云申请SSL证书多少钱?免费版不要钱,付费版352元/年

SSL证书是实现网站https访问必须购买的云安全类产品&#xff0c;以阿里云为代表的各大云服务商也都提供申请SSL证书服务&#xff0c;2024年阿里云既提供免费版的SSL证书&#xff0c;也有付费版的&#xff0c;最低只要352元/年。 一、阿里云申请免费版SSL证书申请流程&#xff…

中国平安金融壹账通交付管理中心总经理崔羽先生受邀为第十三届中国PMO大会演讲嘉宾

全国PMO专业人士年度盛会 中国平安金融壹账通交付管理中心总经理崔羽先生受邀为PMO评论主办的2024第十三届中国PMO大会演讲嘉宾&#xff0c;演讲议题为“项目管理成与败&#xff0c;人才是第一要素”。大会将于5月25-26日在北京举办&#xff0c;敬请关注&#xff01; 议题简要…

任推邦七款热门拉新项目,普通人逆袭路径,月入6个W!

任推邦 不扣量的项目拉新平台 1UC网盘 —网推 价格上涨行业置顶 &#xff0c;大厂项目 市场空白&#xff0c;预算充足&#xff0c;不限量 适合自媒体/抖快等渠道 上传下载不限速 2迅雷网盘—网推 官方核心服务商&#xff0c;大厂项目 群组内测&#xff08;新增转播收…

【生产实习-毕设】pyspark学生成绩分析与预测(上)

注意&#xff1a;数据由实习单位老师提供&#xff08;需要自行搜索下载&#xff09;&#xff0c;页面美化为下载模板。 项目介绍&#xff1a;前端页面输入影响成绩的属性&#xff0c;预测出成绩&#xff0c;并作可视化展示——属性对成绩的影响。使用python pyspark 进行数据预…