news 2026/4/23 13:58:23

C++ 存储类

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C++ 存储类

存储类定义 C++ 程序中变量/函数的范围(可见性)和生命周期。这些说明符放置在它们所修饰的类型之前。下面列出 C++ 程序中可用的存储类:

  • auto:这是默认的存储类说明符,通常可以省略不写。auto 指定的变量具有自动存储期,即它们的生命周期仅限于定义它们的块(block)。auto 变量通常在栈上分配。

  • register:用于建议编译器将变量存储在CPU寄存器中以提高访问速度。在 C++11 及以后的版本中,register 已经是一个废弃的特性,不再具有实际作用。

  • static:用于定义具有静态存储期的变量或函数,它们的生命周期贯穿整个程序的运行期。在函数内部,static变量的值在函数调用之间保持不变。在文件内部或全局作用域,static变量具有内部链接,只能在定义它们的文件中访问。

  • extern:用于声明具有外部链接的变量或函数,它们可以在多个文件之间共享。默认情况下,全局变量和函数具有 extern 存储类。在一个文件中使用extern声明另一个文件中定义的全局变量或函数,可以实现跨文件共享。

  • mutable (C++11):用于修饰类中的成员变量,允许在const成员函数中修改这些变量的值。通常用于缓存或计数器等需要在const上下文中修改的数据。

  • thread_local (C++11):用于定义具有线程局部存储期的变量,每个线程都有自己的独立副本。线程局部变量的生命周期与线程的生命周期相同。

从 C++ 17 开始,auto 关键字不再是 C++ 存储类说明符,且 register 关键字被弃用。

中的存储类说明符为程序员提供了控制变量和函数生命周期及可见性的手段。

合理使用存储类说明符可以提高程序的可维护性和性能。

从 C++11 开始,register 已经失去了原有的作用,而 mutable 和 thread_local 则是新引入的特性,用于解决特定的编程问题。

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

STM32项目分享:粮仓环境监测系统

目录 一、前言 二、项目简介 1.功能详解 2.主要器件 三、原理图设计 四、PCB硬件设计 PCB图 五、程序设计 六、实验效果 ​ 七、包含内容 项目分享 一、前言 项目成品图片: 哔哩哔哩视频链接: https://www.bilibili.com/video/BV1pymdB2ELT/?…

作者头像 李华
网站建设 2026/4/18 7:57:34

美亚 4.7 星评,专家力荐,用 28 道题搞定算法核心能力!

很多人真正意识到算法能力这件事,往往不是在书桌前,而是在刷题平台上。代码能不能过、时间复杂度是否超限,计算机会用最直接的方式给你反馈。也正因为如此,在线评测系统才会被广泛用于招聘筛选、编程竞赛,以及程序员的…

作者头像 李华
网站建设 2026/4/23 11:35:28

别再用手机自带天气了

天气应用的技术革命:从数据接收到智能预警的全链路解密当我第一次打开 Mercury Weather 3.0 的飓风追踪界面时,眼前出现的不仅仅是简单的气象图标,而是一个完整的气象数据可视化系统。这让我不禁思考:在看似简单的天气应用背后&am…

作者头像 李华
网站建设 2026/4/23 11:29:49

电车的真相,700公里续航跑长途仅是勉强够,有效续航仅六成

随着纯电车的续航不断提升,如今部分电车的续航已达到700公里了,单从数据来看,电车达到这样的续航应该能充分满足要求了,但是只要一跑长途,就会发现这样的续航仅仅是勉强够,这是因为快充技术的特性决定的。车…

作者头像 李华
网站建设 2026/4/21 2:09:33

Android应用程序 c/c++ 崩溃排查流程二——AddressSanitizer工具使用

目录 1.背景 2.ASan工具集成到应用中进行使用 3.使用ASan工具查看日志 1.背景 由于在Android应用中进行c/c编程会有各种crash或者内存指针异常,如果内存需要查看哪地方进行释放内存是无法通过addr2line或者ndk-stack工具排查出来的,这时就需要使用Add…

作者头像 李华