c++ 学习 之static 和 const深入学习

news/2024/7/24 10:38:39 标签: c++, 学习, java

作用域

static 和 const 的作用域都是当前模块(当前cpp文件),所以不同的模块可以定义同名的static 和 const 变量

在这里插入图片描述
在上面的例子中,我们先了解一些基础知识:

static int x = 1;
const int x = 1;
static const int x = 1;

上面的三种声明都涉及到变量 x,但它们在作用域和可修改性方面有不同的区别。

static int x = 1;

这声明了一个静态整数变量 x,其作用域限定在当前文件中。它可以被修改,因为它没有被声明为常量。
const int x = 1;

这声明了一个整数常量 x,其作用域通常也限定在当前文件中(如果是在文件的顶层声明的话),但它不能被修改。试图修改这个变量将导致编译错误。
static const int x = 1;

这声明了一个静态整数常量 x,其作用域同样限定在当前文件中,同时也不能被修改。这是常量的一种形式,因此也不可修改。
总结:第一个声明创建一个可修改的静态整数变量,第二个声明创建一个不可修改的整数常量,第三个声明创建一个不可修改的静态整数常量。这些声明的区别主要在于作用域和可修改性。

在图片的代码中,2.cpp 中即使写了 extern const int a ; (这句话本身没有问题),但是当真正要用到 a 的时候会报错,因为 1.cpp 中 const int a 的作用域是本模块,故 2.cpp 无法访问到

变量定义

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


http://www.niftyadmin.cn/n/5061455.html

相关文章

使用 sonarqube 进行代码质量检查

Docker 环境准备 参考官方文档先对 Docker Server 进行参数调整 Because SonarQube uses an embedded Elasticsearch, make sure that your Docker host configuration complies with the Elasticsearch production mode requirements and File Descriptors configuration. # …

医疗实施-住院流程详解

住院就诊流程详解 1.病人入院登记2.病人进入病区3.医生操作病人4.医嘱录入与审核执行5. 医嘱收费前在对应业务系统的操作5.1.药物医嘱5.2.检查检验医嘱5.3.手术医嘱 6.住院医嘱费用的产生7. 医嘱收费后在对应业务系统的操作8. 病人出院 这篇文章是基于我的文章《医疗实施-住院就…

(二) gitblit用户使用教程

(一)gitblit安装教程 (二) gitblit用户使用教程 (三) gitblit管理员手册 目录 网页访问git客户端设置推送错误配置查看当前配置 日常使用仓库分组my profile修改上传代码简洁 网页访问 点击Advanced... 点击Accept the Risk and Contiue 初始用户名和密码都是admin,点击login…

CSS初体验

目录 一、CSS初体验 二、CSS引入方式 三、选择器 3.1 标签选择器 3.2 类选择器 3.3 id选择器 3.4 通配符选择器 四、盒子尺寸和背景色 五、文字控制属性 5.1 字体大小 5.2 字体样式(是否倾斜) 5.3 行高 5.3.1 单行文字垂直居中 5.4 字体族 5.5 font复合属性 5.…

debian 安装matlab2022b报错解决方法与问题解决思路

报错 terminate called after throwing an instance of ‘std::runtime_error’ 在安装目录执行 ./bin/glnxa64/MATLABWindow通过执行以上命令发现是和libharfbuzz库有关。 该库在调用freetype库时,有方法找不到。 偿试remove freetype库,发现该库有大…

C/C++与汇编混合编程

1. C/C调用汇编 C/C想调用汇编代码必须要注意名称修饰的问题 名称修饰(name decoration): 一种标准的C/C编译技术, 通过添加字符来修改函数名, 添加的字符指明了每个函数参数的确切类型。主要是为了支持函数重载, 但对于汇编来说其问题在于, C/C编译器让链接器去找被修饰过的名…

代码随想录训练营二刷第四十一天 | 343. 整数拆分 96.不同的二叉搜索树

代码随想录训练营二刷第四十一天 | 343. 整数拆分 96.不同的二叉搜索树 一、343. 整数拆分 题目链接:https://leetcode.cn/problems/integer-break/ 思路:dp[i]表示拆分数字i可以得到的最大乘积,至于一个数到底要拆分多少才能达到最优&…

05-Zookeeper典型使用场景实战

上一篇:04-Zookeeper集群详解 1. Zookeeper 分布式锁加锁原理 如上实现方式在并发问题比较严重的情况下,性能会下降的比较厉害,主要原因是,所有的连接都在对同一个节点进行监听,当服务器检测到删除事件时&#xff0c…