news 2026/7/1 22:55:50

C++的第十五天笔记

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C++的第十五天笔记

静态持续性、内部链接性

使用static修饰全局变量时,这个变量的链接性就会变成内部的,即只允许当前源文件访问。

如果在两个不同的文件中定义两个名称相同的全局变量(即使省略extern),程序会报错,即使省略extern。因为其违反了单定义规则,但如果其中一个使用static修饰为静态变量,使用了static的文件会无视掉外部的同名变量。

静态存储持续性、无链接性

将static作用于局部变量,这样这个变量的存储持续性变为静态的,且只在其所在代码块内部可用(无连接性)。因此对函数的两次调用之间,该变量的空间不会被回收,数值不会被改变。

说明符和限定符

说明符的核心是指定变量或函数的属性。比如类型属性,用来指定数据类型,如:int。

存储说明符

用来指定变量/函数的存储位置、生命周期、链接属性。

auto(在C++11中不再是说明符)、register、static、extern、thread_local(C++11新增)、mutable。

在同一个声明中不能使用多个存储说明符,但thread_local除外,它可以和static和extern结合

限定符的核心是对变量或函数的使用规则进行限制,不改变其属性。

cv限定符

const、volatile。

mutable和const

被mutable修饰的成员变量即使在其所在的结构体(类)被const修饰也可以被修改

const是用来限制后面被修饰物的修改权限的关键字。在C++中(非C中)被const修饰的全局变量链接性默认是内部的,相当于同时使用了static。其意义是主要是为了避免多个文件中定义同名const全局变量时的链接冲突

头文件保护宏无法防止链接冲突。如果全局变量有外部链接性,头文件保护宏只保证每个编译期间只定义一次,但是链接阶段编译器会发现,多个文件中定义了同一个同名变量,违反单定义规则。

如果需要某个常量具有外部链接性,可以在const前使用extern覆盖其默认的内部链接性

{}中声明的常量,与变量一样,其作用域位于所处的{}之间。不必担心与其他地方定义的常量冲突。

函数和链接性

和C语言一样,C++不允许在函数内部定义函数。因此函数的存储持续性都是静态的(程序启动时分配内存,结束时释放内存)

在默认情况下,函数的链接性为外部。可以使用static将其修改为内部。与变量一致,使用了static的文件会无视掉外部的同名函数。

对于非内联函数,所有文件中只能包含其的一个定义,但内联函数不受影响(前提是同一个内联函数的每一次定义都相同)。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/30 12:17:28

65.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--新增功能--账本合并

有时我们需要把几个账本合并到一个账本中,这样就可以在一个账本中查看所有的交易记录。那么,在本片文章中我们就来一起实现这个功能。 一、需求分析 用户需要能够将多个账本中的交易记录合并到一个目标账本中,以便在统一的视图下管理和查看所…

作者头像 李华
网站建设 2026/6/25 13:35:17

“Zookeeper Java客户端全解析:面试必知!”

文章目录Zookeeper的Java客户端都有哪些?引言:为什么我们要聊ZooKeeper的Java客户端?第一部分:官方推荐——Curator1.1 Curator是什么?1.2 Curator的特点1.3 Curator的使用示例1.4 Curator的优缺点第二部分&#xff1a…

作者头像 李华
网站建设 2026/7/1 4:37:42

选它还是它?Chubby与ZooKeeper深度对比

文章目录Chubby 是什么?和 ZooKeeper 比,你觉得怎么看待它们?一、Chubby 是什么?1. Chubby 的设计理念2. Chubby 的核心功能3. Chubby 的优缺点优点:缺点:二、ZooKeeper 是什么?1. ZooKeeper 的…

作者头像 李华
网站建设 2026/7/1 17:50:44

2024年WPS365版-模拟训练系统-中级模拟二

2024年WPS365版-模拟训练系统-中级模拟二 单选题 1/33 在 WPS 文档窗口中,要应用一个已有的样式,先选定要应用样式的内容,然后()。 A、单击【插入】选项卡中的【样式】按钮 B、单击【开始】选项卡中的【格式化】按钮 C…

作者头像 李华
网站建设 2026/7/1 9:04:26

揭秘原子操作:Java并发编程的高效技巧

文章目录 揭秘原子操作:Java并发编程的高效技巧一、原子操作的基本概念:什么是原子操作?原子操作的特性 二、从JVM层面理解原子操作内存屏障:原子操作的幕后英雄多核处理器的挑战 三、Java中的原子操作:从理论到实践为…

作者头像 李华
网站建设 2026/7/1 6:09:00

AssetStudio完整指南:Unity资源提取与管理的终极解决方案

AssetStudio完整指南:Unity资源提取与管理的终极解决方案 【免费下载链接】AssetStudio AssetStudio is a tool for exploring, extracting and exporting assets and assetbundles. 项目地址: https://gitcode.com/gh_mirrors/as/AssetStudio AssetStudio作…

作者头像 李华