C++关键字:const

文章目录

    • 一、const的四大作用
      • 1.修饰 变量、数组
      • 2.修饰 函数的形参、修饰 引用 (最常用)
      • 3.修饰 指针:常量指针、指针常量 、只读指针
      • 4.修饰 类的成员函数、修饰 类的对象

一、const的四大作用

1.修饰 变量、数组

1.const修饰变量:
被const修饰的变量,成为只读常量,防止误修改。
const修饰变量,该变量的值在初始化后就不会再被改变。若强行修改,则编译器会报错。

const int N = 1001; //算法题常用
const int a = 10;
const float b = 3.14;
const char c = 'A';a = 11; //报错
b = 3.15; //报错
c = 'B'; //报错

2.const修饰数组:
const修饰数组,则数组中元素的值在初始化后不可被修改。

const int a[] = {1,2,3};
//a[0] = 10;  //错误



2.修饰 函数的形参、修饰 引用 (最常用)

1.const修饰 函数的形参:
可以避免传递过来的值,在函数体内部被误修改。

void printString(const char* str){  //等价于const char str[]cout << "String:" << str << endl;
}

2.const 修饰 引用 (最常用):
引用避免了拷贝、const避免了函数对值的修改。
明确告诉函数的使用者,该参数在经过函数调用时不会被修改,提高了代码的清晰度和安全性。

void setName(string name){ //应优化为 const string &namem_name = name;
}
void printName(const string &name) {cout << "Name: " << name << endl;// name = "Sam"; // 错误:不能修改const引用指向的值
}



3.修饰 指针:常量指针、指针常量 、只读指针

1.常量指针:
const 先碰到 *,表示 变量的值不可修改 const int * ptr
指针的指向可以改变,指针指向的值不可修改。指针只能指向常量。

int a = 1, b = 1;
const int * ptr1 = &a;
ptr1 = &b;  //指针的指向可以修改
//*p1 = 10; //错误:常量指针,指针指向的值不可修改

2.指针常量:
const 先碰到指针,表示 指针不可修改 int * const ptr
指针是个常量,指针的指向不可修改,但是指向的变量的值可以改变

int a = 1, b = 1;
int * const ptr2 = &a;
//ptr2 = &b;  //错误:指针常量,指针指向不可修改
*ptr2 = 10;

3.只读指针:
两个const,表示 变量的值和指针都不可修改 const int * const ptr

int a = 1, b = 1;
const int * const ptr3 = &a;
//ptr3 = &b; //错误:只读指针,指针的指向不可改变
//*p3 = 10;  //错误:只读指针,指针指向的值不可修改

在这里插入图片描述



4.修饰 类的成员函数、修饰 类的对象

1.const 修饰 类的成员函数:
常成员函数 不会修改任何成员变量
成员函数后面加const,则该成员函数不可修改类的成员变量。除非成员变量前面加了关键字mutable

void test(int x) const;
#include <iostream>class Test {
public:int x;mutable int y;  // 可以在const成员函数中被修改Test(int val):x(val),y(0){//使用初始化列表,直接对成员变量初始化} void modify() const {  // const成员函数// x++;  // 错误:不能在const成员函数中修改非mutable成员y++;  // 正确:可以修改mutable成员}
};int main() {Test t(10);t.modify();std::cout << "t.y = " << t.y << std::endl;  // 输出 t.y = 1return 0;
}

2.const 修饰 类的对象:
常对象 只能调用 常成员函数
被const修饰的对象,只能调用类中 结尾带const的成员函数。

const People p;

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

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

相关文章

[LLM]大语言模型文本生成—解码策略(Top-k Top-p Temperature)

{"top_k": 5,"temperature": 0.8,"num_beams": 1,"top_p": 0.75,"repetition_penalty": 1.5,"max_tokens": 30000,"message": [{"content": "你好","role": "user&…

C语言学习过程总结(18)——指针(6)

一、数组指针变量 在上一节中我们提到了&#xff0c;指针数组的存放指针的数组&#xff0c;那数组指针变量是什么呢&#xff1f; 显而易见&#xff0c;数组指针变量是指针 同样类比整型指针变量和字符指针变量里面分别存放的是整型变量地址和字符变量地址&#xff0c;我们可以…

元宇宙VR数字化艺术展降低办展成本

元宇宙AI时代已经来临&#xff0c;越来越多人期待在元宇宙数字空间搭建一个属于自己的虚拟展厅&#xff0c;元宇宙虚拟展厅搭建平台是VR公司深圳华锐视点为企业研发的可编辑工具&#xff0c;那么元宇宙虚拟展厅搭建平台有哪些新突破? 元宇宙虚拟展厅搭建平台采用了先进的web3D…

Navicat:设置mysql数据库表的主键为uuid

文章目录 1 问题描述2 解决方案3 其他方法 1 问题描述 当我使用Navicat新建表test_table之后&#xff0c;想通过导入向导将excel表中的数据导入到表test_tab中&#xff0c;由于没有excel表中没有主键对应的字段&#xff0c;导致导入失败&#xff0c;提示Field id doesnt have …

利用二分法求方程在某个范围内的根

问题描述&#xff1a; 利用二分法求方程在&#xff08;-10,10&#xff09;的根。 方法&#xff1a;先求出两端点的中点&#xff0c;然后将中点带入方程中检查是否等于0&#xff0c;如果等于0说明找到了根&#xff0c;如果大于0&#xff0c;说明根在左半部分&#xff0c;将rig…

自学rabbitmq入门到精通

交换机的fault &#xff08;发布与订阅模式&#xff09; 因为消息是由生产者发送给excahnge&#xff0c;exchange发送给队列&#xff0c; 然后由队列发送给消费者的。 展示使用图形化界面使用fanout模式。 创建交换机 然后创建三个队列&#xff0c;绑定对应的交换机&#xff…

速通Markdown基础写法(含安装Typora)

什么是Markdown Markdown是一种轻量级标记语言&#xff0c;它允许人们使用易读易写的纯文本格式来编写文档&#xff0c;然后转换成格式丰富的HTML页面。这种语言吸收了很多在电子邮件中已有的纯文本标记的特性。 Markdown的语法简洁明了、学习容易&#xff0c;而且功能比纯文…

学成在线_视频处理_视频转码不成功

问题 当我们用xxljob进行视频处理中的转码操作时会发现视频转码不成功。即程序会进入下图所示的if语句内。 问题原因 在进行视频转码时程序会调用Mp4VideoUtil类下的 generateMp4方法&#xff0c;而result接收的正是该方法的返回值。那么什么时候generateMp4方法的返回值会…

【3D reconstruction 学习笔记 第二部】

三维重建 3D reconstruction 4. 三维重建与极几何三角化&#xff08;线性解法&#xff09;三角化&#xff08;非线性解法&#xff09;多视图几何极几何极几何约束基础矩阵估计 5. 双目立体视觉重建6. 多视图重建7. SFM 系统设计8. SLAM系统设计 4. 三维重建与极几何 三角化&…

机器人路径规划:基于霸王龙优化算法(Tyrannosaurus optimization,TROA)的机器人路径规划(提供MATLAB代码)

一、机器人路径规划介绍 移动机器人&#xff08;Mobile robot&#xff0c;MR&#xff09;的路径规划是 移动机器人研究的重要分支之&#xff0c;是对其进行控制的基础。根据环境信息的已知程度不同&#xff0c;路径规划分为基于环境信息已知的全局路径规划和基于环境信息未知或…

蓝桥杯单片机快速开发笔记——特训2 按键的长按与短按

一、题目要求 在CT107D单片机综合训练平台上&#xff0c;通过I/O模式编写代码&#xff0c;实现以下功能&#xff1a; 系统上电后&#xff0c;关闭蜂鸣器、继电器和全部指示灯&#xff0c;数码管显示初始值为28&#xff0c;仅显示数码管最右边两位。利用定时器0实现10ms间隔定…

美摄科技剪同款SDK解决方案全面升级

视频内容已成为企业宣传、品牌塑造和市场营销的重要载体。然而&#xff0c;如何快速、高效地制作出高质量的视频内容&#xff0c;成为摆在众多企业面前的一大难题。针对这一挑战&#xff0c;美摄科技凭借深厚的技术积累和创新能力&#xff0c;推出了全新的剪同款SDK解决方案&am…

如何注册 onlyFans? onlyFans 如何订阅教程

一、onlyFans 介绍 OnlyFans 是一个在线平台&#xff0c;允许创作者为他们的内容提供订阅服务&#xff0c;通常是成人内容或独家内容。该平台于2016年成立&#xff0c;起初被认为是一个用于演员、模特、艺术家和其他创意行业从业者分享内容的地方。随着时间的推移&#xff0c;O…

21 OpenCV 直方图均衡化

文章目录 直方图概念均衡的目的equalizeHist 均衡化算子示例 直方图概念 图像直方图&#xff0c;是指对整个图像像在灰度范围内的像素值(0~255)统计出现频率次数&#xff0c;据此生成的直方图&#xff0c;称为图像直方图-直方图。直方图反映了图像灰度的分布情况。 均衡的目的…

全国农产品价格分析预测可视化系统设计与实现

全国农产品价格分析预测可视化系统设计与实现 【摘要】在当今信息化社会&#xff0c;数据的可视化已成为决策和分析的重要工具。尤其是在农业领域&#xff0c;了解和预测农产品价格趋势对于农民、政府和相关企业都至关重要。为了满足这一需求&#xff0c;设计并实现了全国农产…

摘录笔记——2024年3月20日

这位大佬介绍的技术PM方面心得&#xff0c;有一定的启发意义&#xff08;虽说我现在只是搬砖的&#xff0c;跟PM还有一定差距&#xff09;&#xff0c;现在摘录出来作为记录&#xff1a; 一文聊聊我理解的技术PM作为技术同学&#xff0c;不仅要写好自己的代码&#xff0c;做好…

OpenAI 首席执行官Altman透漏GPT-5最新细节

关注文章底部的公众号,获取每日AI最新新闻 获取每日资讯 Altman透漏GPT-5细节 在最近的一次采访中,美国知名播客 Lex Friedman 邀请 OpenAI 首席执行官 Sam Altman 进行专访。在 Altman 眼中 GPT-4 还是很糟糕的,他预计 5 和 4 之间的差值将与 4 和 3 之间的差值相同。具体…

时代教育期刊投稿发表

《时代教育》是由成都传媒集团主管主办&#xff0c;中华人民共和国新闻出版总署批准国内公开出版发行的专业教育类期刊&#xff0c;主要刊登各类高等院校、职业技术学校、中小学教师及研究生、教育科研工作者的教育实践研究成果&#xff1b;教育教学行业的最新动态&#xff1b;…

Python爬虫案例-爬取主题图片(可以选择自己喜欢的主题)

2024年了&#xff0c;你需要网络资源不能还自己再慢慢找吧&#xff1f; 跟着博主一块学习如何利用爬虫获取资源&#xff0c;从茫茫大海中寻找那个她到再妹子群中找妹子&#xff0c;闭着眼睛都可以找到合适的那种。文章有完整示例代码&#xff0c;拿过来就可以用&#xff0c;欢迎…

【智能算法】多元宇宙优化算法(MVO)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2016年&#xff0c;Mirjalili 等人受到宇宙膨胀理论启发&#xff0c;提出了多元宇宙优化算法(Multi-verse Optimization, MVO)。 2.算法原理 2.1算法思想 MVO基于宇宙膨胀的原理&#xff0c;利用…