C++ const 限定符的全面介绍
C++ const 限定符的全面介绍
1. const 修饰基本数据类型
定义
const 修饰的基本数据类型变量,值不可改变。
语法
const type variable = value;
特点
不可变性,增加代码可读性。
作用
定义不可修改的常量。
使用场景
全局常量、配置项。
注意事项
必须在声明时初始化。
代码示例
#include <iostream>
using namespace std;int main() {const int maxCount = 10;cout << "Max count: " << maxCount << endl;// maxCount = 20; // 错误:不能修改 const 变量return 0;
}
运行结果
Max count: 10
总结
适用于定义程序中的固定值,提高安全性和可维护性。
2. const 修饰指针变量和引用变量
定义
使指针指向的数据或指针本身成为常量。
语法
const type* ptr; // 指针指向的数据是常量
type* const ptr; // 指针本身是常量
const type& ref; // 引用的是常量
特点
防止通过指针或引用修改数据。
作用
保护指向的数据或保护指针本身不被更改。
使用场景
函数参数,防止指针/引用意外修改数据。
注意事项
区分指针指向常量和常量指针。
代码示例
#include <iostream>
using namespace std;void display(const int* ptr) {cout << "Value: " << *ptr << endl;
}int main() {int value = 10;const int* ptrToConst = &value; // 指向常量的指针display(ptrToConst);int* const constPtr = &value; // 常量指针*constPtr = 20;display(constPtr);return 0;
}
运行结果
Value: 10
Value: 20
总结
用于保护数据不被意外修改,提高代码的安全性。
3. const 应用到函数中
定义
函数参数、返回值或成员函数使用 const。
语法
void func(const type arg); // 参数是常量
const type func(); // 返回常量
type func() const; // 常量成员函数
特点
保护函数参数和返回值,确保对象成员函数不修改对象状态。
作用
防止函数修改输入数据,保证成员函数不改变对象状态。
使用场景
当不希望函数更改数据或对象状态时。
注意事项
常量成员函数不能修改任何成员变量。
代码示例
#include <iostream>
using namespace std;class MyClass {
public:MyClass(int val) : value(val) {}int getValue() const { return value; } // 常量成员函数private:int value;
};void printValue(const MyClass& obj) {cout << "Value: " << obj.getValue() << endl;
}int main() {MyClass obj(10);printValue(obj);return 0;
}
运行结果
Value: 10
总结
确保数据和对象状态的安全性和稳定性。
4. const 在类中的用法
定义
在类定义中使用 const 修饰成员变量和成员函数。
语法
class MyClass {
public:MyClass(int val) : constMember(val) {}int getConstMember() const { return constMember; } // 常量成员函数
private:const int constMember; // 常量成员变量
};
特点
增强类封装,确保数据安全。
作用
定义不可变的成员变量和不改变对象状态的成员函数。
使用场景
设计不可变成员或保证成员函数的安全性。
注意事项
常量成员变量必须在构造函数初始化列表中初始化。
代码示例
#include <iostream>
using namespace std;class MyClass {
public:MyClass(int v) : constMember(v) {}int getConstMember() const { return constMember; }private:const int constMember;
};int main() {MyClass obj(10);cout << "Const member: " << obj.getConstMember() << endl;return 0;
}
运行结果
Const member: 10
总结
在类中使用 const 提高成员变量和函数的安全性和稳定性。
5. const 修饰类对象
定义
定义不可改变的类对象。
语法
const ClassName object;
特点
常量对象只能调用其常量成员函数。
作用
确保对象状态不被更改。
使用场景
需要只读访问对象时。
注意事项
常量对象不能调用非常量成员函数。
代码示例
#include <iostream>
using namespace std;class MyClass {
public:MyClass(int v) : value(v) {}int getValue() const { return value; }private:int value;
};int main() {const MyClass constObject(10);cout << "Const object value: " << constObject.getValue() << endl;return 0;
}
运行结果
Const object value: 10
总结
使用 const 修饰类对象可确保对象的完整性和不变性,适合只读场景。
相关文章:
C++ const 限定符的全面介绍
C const 限定符的全面介绍 1. const 修饰基本数据类型 定义 const 修饰的基本数据类型变量,值不可改变。 语法 const type variable value;特点 不可变性,增加代码可读性。 作用 定义不可修改的常量。 使用场景 全局常量、配置项。 注意事项…...
Vue 中的 ref 与 reactive:让你的应用更具响应性(上)
🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…...
华为云CCE-集群内访问-根据ip访问同个pod
华为云CCE-集群内访问-根据ip访问同个pod 问题描述:架构如下:解决方法: 问题描述: 使用service集群内访问时,由于启用了两个pod,导致请求轮询在两个pod之间,无法返回正确的结果。 架构如下&am…...
Kasada p.js (x-kpsdk-cd、x-kpsdk-ct、integrity)
提供x-kpsdk-cd的API服务 详细请私信~ 可试用~ V:zhzhsgg 一、简述 integrity是通过身份验证Kasada检测机器人流量后获得的一个检测结果(数据完整性) x-kpsdk-cd 是经过编码计算等等获得。当你得到正确的解决验证码值之后,解码会看到如下图…...
Thinkphp 5框架学习
TP框架主要是通过URL实现操作 http://servername/index.php/模块/控制器/操作/参数/值.. index.php 为入口文件,在 public 目录内的 index.php 文件; 模块在 application 目录下默认有一个 index 目录,这就是一个模块; 而在 index 目录下有一个 contro…...
麒麟云增加计算节点
一、安装基座系统并配置好各项设置 追加的计算节点服务器,安装好系统,把主机名、网络网线(网线要和其他网线插的位置一样)、hosts这些配置好,在所有节点的/etc/hosts里面添加信息 在控制节点添加/kylincloud/multinod…...
使用Redis进行搜索
文章目录 构建反向索引 构建反向索引 在Begin-End区域编写 tokenize(content) 函数,实现文本标记化的功能,具体参数与要求如下: 方法参数 content 为待标记化的文本; 文本标记的实现:使用正则表达式提取全小写化后的…...
Oracle修改用户密码
文章目录 Oracle修改用户密码Oracle用户锁定常见的两种状态Oracle用户锁定和解锁 Oracle修改用户密码 使用sys或system使用sysdba权限登录,然后执行以下命令修改密码: alter user 用户名 identified by 密码;密码过期导致的锁定,也通过修改…...
LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
目录链接: 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 描述: 圣诞活动预…...
Vue解决跨域问错误:has been blocked by CORS policy 后端跨域配置
解决跨域问题后端跨域配置代码: /*** 作者 hua* 描述 跨域配置*/ Configuration public class WebConfiguration implements WebMvcConfigurer {/*** 跨域配置对象* return CorsConfiguration对象*/private CorsConfiguration corsConfig() {CorsConfiguration cor…...
【谷歌云】注册谷歌云 创建Compute Engine
文章目录 一、Google Cloud注册1.1 账号信息1.2 付款信息验证1.3 验证成功 二、Compute Engine创建2.1 启动Compute Engine API2.2 创建实例2.3 新建虚拟机实例2.4 等待实例创建完成2.5 查看虚拟机配置信息2.6 创建防火墙规则2.7 SSH远程连接虚拟机 三、参考链接 一、Google Cl…...
面试数据库八股文五问五答第四期
面试数据库八股文五问五答第四期 作者:程序员小白条,个人博客 相信看了本文后,对你的面试是有一定帮助的! ⭐点赞⭐收藏⭐不迷路!⭐ 1)什么情况下 mysql 会索引失效? 不使用索引列进行查询&a…...
2023 年中国金融级分布式数据库市场报告:TiDB 位列领导者梯队,创新能力与增长指数表现突出
近日,沙利文联合头豹研究院发布了中国数据库系列报告之《2023 年中国金融级分布式数据库市场报告》。 报告认为,金融行业对于分布式数据库信任度与认可度正在逐步提高,中国金融级分布式数据库市场正处于成熟落地的高增长阶段,行业…...
基于ExoPlayer的缓存方案实现
音视频APP 的一个必备功能就是在播放的时候会持续缓存完整个音频,同时进度条会更新缓存进度。但是目前Google推出的播放器ExoPlayer本身并没有提供什么方便的接口去实现这个功能,因此大多数的开发者可能会使用AndroidVideoCache 开源库来实现缓存。 AndroidVideoCache 的原理…...
前缀和算法 -- 寻找数组的中心坐标
个人主页:Lei宝啊 愿所有美好如期而遇 本题链接 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 输入描述 给定一个数组,接口为int pivotIndex(vector<int>& nums) 输出描述 我们以示例1为例画图解释…...
autograd与逻辑回归
一、autograd—自动求导系统 torch.autograd.backward() torch.autograd.backward()是PyTorch中用于计算梯度的函数。以下是对该函数的参数的解释: 功能:自动求取梯度 • tensors: 用于求导的张量,如 loss • retain_graph : 保存计算图 •…...
Xshell 从github克隆项目:使用ssh方式。
接上文: https://blog.csdn.net/liu834189447/article/details/135247868 是能克隆项目了,但是速度太磕碜了,磕碜到难以直视。 找到另外一种办法,使用SSH克隆项目 速度嘎嘎猛。 首先得能进得去github网站,不能点上边…...
C++:通过erase删除map的键值对
map是经常使用的数据结构,erase可以删除map中的键值对。 可以通过以下几种方式使用erase 1.通过迭代器进行删除 #include <iostream> #include <map> #include <string> using namespace std;void pMap(const string& w, const auto& m) {cout&l…...
华为月薪25K的自动化测试工程师到底要会那些技能!
前言 3年自动化测试软件测试工程师职业生涯中,我所经历过的项目都是以自动化测试为主的。由于自动化测试是一个广泛的领域,我将自己的经验整理了一下分享给大家,话不多说,直接上干货。 自动化测试的目标和实践选择合适的自动化…...
diffusers 源码待理解之处
一、训练DreamBooth时,相关代码的细节小计 ** class_labels timesteps 时,模型的前向传播怎么走?待深入去看 ** 利用class_prompt去生成数据,而不是instance_prompt class DreamBoothDataset(Dataset):"""A dat…...
RAG提示工程失效?NotebookLM上下文压缩机制深度拆解,3类文档结构适配公式即拿即用
更多请点击: https://intelliparadigm.com 第一章:RAG提示工程失效的底层归因与NotebookLM破局逻辑 RAG(Retrieval-Augmented Generation)系统在真实场景中频繁遭遇“提示失焦”现象——检索结果与生成目标语义脱节,导…...
5分钟终极指南:如何免费激活Windows和Office的完整解决方案
5分钟终极指南:如何免费激活Windows和Office的完整解决方案 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统未激活的提示而烦恼吗?或者Office办公软件显…...
专业指南:Anno 1800 Mod Loader完整使用教程与架构解析
专业指南:Anno 1800 Mod Loader完整使用教程与架构解析 【免费下载链接】anno1800-mod-loader The one and only mod loader for Anno 1800, supports loading of unpacked RDA files, XML merging and Python mods. 项目地址: https://gitcode.com/gh_mirrors/an…...
nslookup-mcp:基于MCP协议的DNS查询工具部署与实战指南
1. 项目概述:一个为安全与开发场景设计的DNS查询工具如果你经常需要排查网络问题、分析域名配置,或者像我一样,在渗透测试或安全研究时,需要快速、批量地查询DNS记录,那么命令行里的nslookup或dig工具可能已经让你感到…...
百度首页网页图片更多当AI开始写测试用例,手工测试工程师的护城河在哪里?
一、 第一道护城河:从“用例执行者”到“策略设计者”AI可以基于需求文档和历史数据,瞬间生成海量测试用例。但它无法回答一个根本性的问题:我们究竟应该测试什么?测试策略的设计,是在有限的时间和资源下,对…...
Taotoken CLI工具一键配置开发环境与团队密钥共享指南
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Taotoken CLI工具一键配置开发环境与团队密钥共享指南 在团队协作开发中,统一大模型API的接入配置是一个常见痛点。每位…...
基于MCP协议与本地全文检索的电子元件文档AI查询系统
1. 项目概述:为LLM构建一个本地化的电子元件文档搜索引擎如果你是一名嵌入式工程师、硬件开发者,或者像我一样,经常需要和德州仪器(TI)、意法半导体(ST)、亚德诺(ADI)这些…...
从原理到实践:详解Livox激光雷达与相机外参标定的ROS实现
1. 为什么需要激光雷达与相机标定? 在自动驾驶和机器人领域,激光雷达和相机是最常用的两种传感器。激光雷达能提供精确的三维距离信息,而相机则能捕捉丰富的纹理和颜色信息。但要让这两种传感器真正发挥11>2的效果,就必须解决…...
从零上手CircuitJS1:开源电路仿真工具的核心功能与实战演练
1. 初识CircuitJS1:浏览器里的电子实验室 第一次打开CircuitJS1时,我仿佛回到了大学电子实验室——只不过这次所有仪器都装进了浏览器窗口。这个完全开源的工具用JavaScript重构了经典的Falstad电路模拟器,不需要安装任何插件就能在Chrome或…...
TypeGPT:全局AI助手实现原理与配置指南,让大模型无缝融入工作流
1. 项目概述:一个全局AI助手,如何让大模型无处不在 如果你和我一样,每天的工作流里充斥着各种文本输入场景——写代码、回邮件、在文档里做笔记、甚至在聊天软件里跟同事讨论问题,那你肯定也想过:要是能让AI助手随时待…...
