c++积累12-const

news2024/11/16 4:38:58

1、文件作用域-const修饰变量默认为文件局部变量

注意:非const变量默认为extern。要使const变量能够在其他文件中访问,必须在文件中显式地指定它为extern。
1) 未被const修饰的变量在不同文件的访问
在这里插入图片描述
在这里插入图片描述
可以看到是能够默认不加const是可以正常访问的
2) 被const修饰的变量在不同文件的访问
在这里插入图片描述
在这里插入图片描述
加了const之后,外部文件访问会报错

3) 被const修饰的变量添加extern在不同文件的访问
在这里插入图片描述
在这里插入图片描述
可以正常输出

2、定义常量

在这里插入图片描述
b 为常量,不可更改!
i 为常量,必须进行初始化!(因为常量在定义后就不能被修改,所以定义时必须初始化。)

3、const 指针

两种解读方式:
1、与指针相关的const有四种:

const char * a; // 指向const对象的指针或者说指向常量的指针。
char const * a; // 同上
char * const a; // 指向类型对象的const指针。或者说常指针、const指针。
const char * const a; // 指向const对象的const指针。

如果const位于的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;
如果const位于
的右侧,const就是修饰指针本身,即指针本身是常量。

2、利用英文从右边往左边读,并且以to为分界,to之前为描述指针的特性,to之后为描述目标的特性

const char * p; //p is a pointer to const char
char const * p; //同上
char * const p; //p is a const pointer to char
const char * const p; //p is a const pointer to const char

当指针被加上const特性,则指针不可改变指向的地址
当指向的目标特性为char,则内容可以透过指针被修改,如: *char=‘y’;
当指向的目标特性为const char,则内容不可透过指针修改

3.1 指向常量的指针

在这里插入图片描述

3.2 常指针

在这里插入图片描述

3.3 指向常量的常指针

在这里插入图片描述

4、函数中使用const

4.1 修饰函数

在这里插入图片描述

4.2 修饰函数参数

在这里插入图片描述

5、类中使用const

在一个类中,任何不会修改数据成员的函数都应该声明为const类型。如果在编写const成员函数时,不慎修改 数据成员,或者调用了其它非const成员函数,编译器将指出错误,这无疑会提高程序的健壮性。

使用const关键字进行说明的成员函数,称为常成员函数。只有常成员函数才有资格操作常量或常对象,没有使用const关键字进行说明的成员函数不能用来操作常对象。

5.1 对于类中的const成员变量必须通过初始化列表进行初始化

在这里插入图片描述
在这里插入图片描述

5.2 const对象只能访问const成员函数,而非const对象可以访问任意的成员函数,包括const成员函数.

在这里插入图片描述

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

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

相关文章

某大型啤酒企业:构建网络安全软实力,首选Coremail反钓鱼演练

客户背景 某大型啤酒厂商的公司规模和市场份额多年来始终都处于行业领先地位,积极赞助多项体育赛事,持续丰富和提升品牌形象。作为一家具有全球影响力的企业,自然也成为了全球黑客等攻击团伙的重点目标,而系统攻击的开端便是钓鱼…

什么是产品路线图?如何做产品路线图规划

产品路线图规划 •产品路线图是一个高层次的战略计划,它描述了产品在未来一段时间可能会如何发展和壮大,产品路线图确保整个产品团队持续关注产品的目标,帮助产品负责人把握产品的战略方向,调整产品的优先级和产品规划。 里程碑…

轻松打造智能化性能测试监控平台:【JMeter+Grafana+Influxdb】的优化整合方案

目录 【引言】 【背景说明】 【实现原理】 【平台搭建】 方法一:Windows或macOS环境下搭建 1.InfluxDB安装 2.grafana安装 3.jmeter配置 方法二:Linux环境下搭建 1.influxdb安装 2.grafana安装 3.jdkjmeter安装 方法三:docker容…

L1-093 猜帽子游戏

宝宝们在一起玩一个猜帽子游戏。每人头上被扣了一顶帽子,有的是黑色的,有的是黄色的。每个人可以看到别人头上的帽子,但是看不到自己的。游戏开始后,每个人可以猜自己头上的帽子是什么颜色,或者可以弃权不猜。如果没有…

python接口自动化测试之unittest自动化测试框架基本使用

目录 unittest简单介绍 unittest基础使用 unittest.Testcase setUp tearDown setUpClass tearDownClass 测试用例 unittest.main() unitteest提供的各种断言方式 unittest测试用例跳过执行 跳过执行测试用例共有四种写法 self.skipTest(reason) 跳过执行测试用例注…

手动搭建一个简单的MVVMLight框架的方法

本章讲述:手动搭建一个简单的MVVMLight框架步骤: 1、下载MVVMLight所需要的dll库文件 主要文件包括:CommonServiceLocator.dll、GalaSoft.MvvmLight.dll、GalaSoft.MvvmLight.Extras.dll、GalaSoft.MvvmLight.Platform.dll、System.Windows.…

小兔新--项目实战总结1

目录 Layout-吸顶导航交互实现 吸顶交互 vueUse Layout-Pinia优化重复请求 为什么要优化 如何优化 Home-懒加载指令优化 场景和指令用法 实现思路和步骤 回顾核心步骤代码 Home-懒加载指令优化 问题1:逻辑书写位置不合理 问题2:重复监听问题 一级分类-解决路由缓存问…

Web基本与HTTP协议

目录 一:域名 1.域名概述 2.域名空间结构 3. 域名注册 二: 网页访问(HTTP/HTTPS) 1.网页的基本概念 2.网站 3.主页 4.域名 5.HTTP 6.URL 7.网页基本标签 (1)网页摘要信息的作用 (…

Oracle SQLTUNING优化SQL

通过AWR的TOPSQL观察到sqlid为6pk9xfmjd0s8j的sql语句耗时1分钟。 通过ash观察到,该SQL由于全表扫描占用了大量的IO资源。 解析执行计划,看到是MED_SALE_ORDER表做了全表扫描。 该表有678W条记录,全表扫描必定IO指标会冲高,影…

SFM过程(一)

以图像为基础的三维重建过程SFM基本如下图所示&#xff1a; 以SfM-Toy-Library代码为例&#xff0c;如下&#xff1a; ErrorCode SfM::runSfM() {if (mImages.size() < 0) {cerr << "No images to work on." << endl;return ErrorCode::ERROR;}//in…

Java-网络原理

目录 一、网络互连 局域网LAN 广域网WAN 二、网络通信基础 IP地址 端口号 认识协议 三、五元组 四、协议分层 五、OSI七层模型 六、TCP/IP五层&#xff08;或四层&#xff09;模型 网络分层对应 七、封装和分用 一、网络互连 随着时代的发展&#xff0c;越来越需要计…

Smartbi电子表格故事之用数据进行销售问题分析

天津小麦商贸有限公司&#xff08;X&M&#xff09;成立于2012年11月&#xff0c;主营业务是商贸流通业&#xff0c;主要是日用商品的批发销售。 2012年前&#xff0c;公司创始人&#xff08;总经理和销售总监&#xff09;一直从事外贸的生意&#xff0c;自从2008年金融危机…

java 课程信息管理系统Myeclipse开发mysql数据库struts2结构java编程计算机网页项目

一、源码特点 java 课程信息管理系统 是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql&#xff0c;使…

Scrum的执行过程及产品Backlog梳理的目的、时间、内容

Scrum的迭代运行过程 产品Backlog梳理 目的&#xff1a; •对下个Sprint的需求进行需求细节梳理和精化&#xff0c;识别技术风险和依赖&#xff0c;完成估算和优先级排序。 时间&#xff1a; •本Sprint开始后第6天&#xff0c;2小时以内 。 内容&#xff1a; •理解需求…

2020下半年

2020下半年 d a b 小阶向大阶对齐 b b 平均cpi: MIPS: d c 公加验&#xff0c;私解签 加密防止被动攻击&#xff0c;认证防止主动攻击 a 访问控制包括&#xff1a;授权&#xff0c;确定存取权限&#xff0c;实施存取权限 c a c a 先申请先得 b b 著作权包括&…

论文分享 | WSBERT:Weighted Sampling for Masked Language Modeling

本次分享阿里巴巴达摩院语音实验室、新南威尔士大学与香港科技大学&#xff08;广州&#xff09;等在ICASSP2023会议发表的论文《Weighted Sampling for Masked Language Modeling》。该论文主要提出了两种简单有效的加权采样策略&#xff0c;来缓解掩码语言模型&#xff08;ML…

七、数据仓库详细介绍(调度)

0x00 前言 在之前的文章&#xff0c;我们规划了数仓架构&#xff0c;制定了数仓规范&#xff0c;然后在架构和规范的指导下设计了存储模型、构建了 ETL 系统。 数仓模型解决了数据存储问题&#xff0c;ETL 解决了数据同步集成计算问题&#xff0c;而调度解决的是自动化问题。 …

【音视频】音视频自研对比

WVP(自研视频调度平台&#xff09;CM8播放器&#xff08;前端&#xff09;传输协议&#xff1a;websocket 编码协议&#xff1a;ts 语言&#xff1a;TS传输协议&#xff1a;websocket 编码协议&#xff1a;fmp4、mse 语言&#xff1a;JS框架&#xff1a;jessibuca 性质&#xf…

TCP和UDP

文章目录 1、常见误区2、TCP和UDP的区别和应用场景3、使用了它们的协议有哪些&#xff1f;4、总结 我之前的文章中讲解即时通讯系统中&#xff0c;就用到了可靠传输协议TCP&#xff0c;在那里面我们解决了TCP传输中的半包和黏包&#xff0c;而且还实际的讨论了用了TCP&#xff…

免费开源 | 基于SpringBoot的学生信息管理系统

一、项目简介 学生信息管理后台&#xff0c;包括学生管理、课程管理、成绩管理&#xff0c;适用于课设等&#xff0c;仅具有管理功能&#xff0c;感兴趣的伙伴可以再次完善。 二、软件架构 springboot mybatis thymeleaf 三、系统运行 注&#xff1a;mysql数据库要8.0以上…