c++ static修饰变量、函数、对象、数组

2023-11-08

static相关语法

预备知识

  • 静态存储区:全局变量和static变量,在静态数据区,内存中所有的字节默认值都是0x00,所以全局变量和static变量的初始值都是0。

一、static 修饰变量

修饰局部变量

  • 局部static变量相对局部普通变量来说,生命周期延长了,同时局部static变量只允许被初始化一次。(生命周期
  • 类中static变量在类外初始化。可以通过 类名::变量名 访问,也可以通过 对象::变量名 访问。

修饰全局变量

  • 全局静态变量和全局普通变量的存储方式一样,都是静态存储;但是全局普通变量的作用域是整个源程序,其他源文件也可以访问,而static全局变量作用域是本文件(const修饰的变量可以通过extern来对外暴露);另外static全局变量只初始化一次。(作用域

修饰类中变量

  • 类中的变量可以被类和对象访问,初始值为0,可以在类外赋初始值。(跟局部变量属性类似)
  • 由于static变量不属于任何一个对象,因此不会再构造函数中赋值,初始值是静态区的默认值0,后面需要在类外赋初值
  • 当static const一起修饰时,可以在类中赋初始值

内存初始化时机

全局变量、静态全局变量和类的静态成员变量在main执行之前的静态初始化过程中分配内存并初始化;
局部静态变量(一般为函数内的静态变量)在第一次使用时分配内存并初始化

二、static修饰函数

修饰普通函数:全局静态函数

  • 全局静态函数 相对于普通函数,作用域只限制在本文件中;而普通的全局函数默认是extern的,其他源文件也可以访问。

修饰类中的函数:静态成员函数

  • 静态成员函数 只能访问或修改静态成员变量和函数, 不会访问或者修改任何对象非static数据成员。因为类的静态成员变量和函数在类加载的时候就会分配内存,而非static成员属于对象,在对象创建的时候才会分配内存。
  • static成员函数不能被const修饰

三、static修饰类对象

  • 普通对象可以通过extern跨文件访问,静态对象本文件访问
  • 静态对象如果在函数内,执行的时候才会构造,在函数外,全局static类对象在main前构造。(跟局部变脸光属性类似)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c++ static修饰变量、函数、对象、数组 的相关文章

  • 部署 MVC4 项目时出错:找不到文件或程序集

    过去 我只需使用 Visual Studio 2012 发布到 AWS 菜单项即可部署我的 MVC4 网站 到 AWS Elastic Beanstalk 现在 程序可以在本地编译并运行 但无法部署 从消息来看 它似乎正在寻找不在当前部署的
  • 属性对象什么时候创建?

    由于属性实际上只是附加到程序集的元数据 这是否意味着属性对象仅根据请求创建 例如当您调用 GetCustomAttributes 时 或者它们是在创建对象时创建的 或者 前两个的组合 在由于 CLR 的属性扫描而创建对象时创建 从 CLR
  • 如何在 Unity 中从 RenderTexture 访问原始数据

    问题的简短版本 我正在尝试访问 Unity 中 RenderTexture 的内容 我一直在使用 Graphics Blit 使用自己的材质进行绘制 Graphics Blit null renderTexture material 我的材
  • 嵌入式系统中的malloc [重复]

    这个问题在这里已经有答案了 我正在使用嵌入式系统 该应用程序在 AT91SAMxxxx 和 cortex m3 lpc17xxx 上运行 我正在研究动态内存分配 因为它会极大地改变应用程序的外观 并给我更多的力量 我认为我唯一真正的路线是为
  • fgets() 和 Ctrl+D,三次才能结束?

    I don t understand why I need press Ctrl D for three times to send the EOF In addition if I press Enter then it only too
  • 使用 Microsoft Graph API 订阅 Outlook 推送通知时出现 400 错误请求错误

    我正在尝试使用 Microsoft Graph API 创建订阅以通过推送通知获取 Outlook 电子邮件 mentions 我在用本文档 https learn microsoft com en us graph api subscri
  • C# 中值类型和引用类型有什么区别? [复制]

    这个问题在这里已经有答案了 我知道一些差异 值类型存储在堆栈上 而引用类型存储在托管堆上 值类型变量直接包含它们的值 而引用变量仅包含对托管堆上创建的对象位置的引用 我错过了任何其他区别吗 如果是的话 它们是什么 请阅读 堆栈是一个实现细节
  • C# 中可空类型是什么?

    当我们必须使用nullable输入 C net 任何人都可以举例说明 可空类型 何时使用可空类型 https web archive org web http broadcast oreilly com 2010 11 understand
  • 如何在 WPF RichTextBox 中跟踪 TextPointer?

    我正在尝试了解 WPF RichTextBox 中的 TextPointer 类 我希望能够跟踪它们 以便我可以将信息与文本中的区域相关联 我目前正在使用一个非常简单的示例来尝试弄清楚发生了什么 在 PreviewKeyDown 事件中 我
  • C# 用数组封送结构体

    假设我有一个类似于 public struct MyStruct public float a 我想用一些自定义数组大小实例化一个这样的结构 在本例中假设为 2 然后我将其封送到字节数组中 MyStruct s new MyStruct s
  • Windows 窗体不会在调试模式下显示

    我最近升级到 VS 2012 我有一组在 VS 2010 中编码的 UI 测试 我试图在 VS 2012 中启动它们 我有一个 Windows 窗体 在开始时显示使用 AssemblyInitialize 属性运行测试 我使用此表单允许用户
  • 如何在 Team Foundation 上强制发表有意义的签入评论?

    我有一个开发团队有一个坏习惯 他们写道poor签入评论 当我们必须在团队基础上查看文件的历史记录时 这使得它成为一场噩梦 我已经启用了变更集评论政策 这样他们甚至可以在签到时留下评论 否则他们不会 我们就团队的工作质量进行了一些讨论 他们很
  • Windows 10 中 Qt 桌面应用程序的缩放不当

    我正在为 Windows 10 编写一个简单的 Qt Widgets Gui 应用程序 我使用的是 Qt 5 6 0 beta 版本 我遇到的问题是它根本无法缩放到我的 Surfacebook 的屏幕上 这有点难以判断 因为 SO 缩放了图
  • 什么是 C 语言的高效工作流程? - Makefile + bash脚本

    我正在开发我的第一个项目 该项目将跨越多个 C 文件 对于我的前几个练习程序 我只是在中编写了我的代码main c并使用编译gcc main c o main 当我学习时 这对我有用 现在 我正在独自开展一个更大的项目 我想继续自己进行编译
  • EPPlus Excel 更改单元格颜色

    我正在尝试将给定单元格的颜色设置为另一个单元格的颜色 该单元格已在模板中着色 但worksheet Cells row col Style Fill BackgroundColor似乎没有get财产 是否可以做到这一点 或者我是否必须在互联
  • 已过时 - OpenCV 的错误模式

    我正在使用 OpenCV 1 进行一些图像处理 并且对 cvSetErrMode 函数 它是 CxCore 的一部分 感到困惑 OpenCV 具有三种错误模式 叶 调用错误处理程序后 程序终止 Parent 程序没有终止 但错误处理程序被调
  • 窗体最大化时自动缩放子控件

    有没有办法在最大化屏幕或更改分辨率时使 Windows 窗体上的所有内容自动缩放 我发现手动缩放它是正确的 但是当切换分辨率时我每次都必须更改它 this AutoScaleDimensions new System Drawing Siz
  • 如何使用 ReactiveList 以便在添加新项目时更新 UI

    我正在创建一个带有列表的 Xamarin Forms 应用程序 itemSource 是一个reactiveList 但是 向列表添加新项目不会更新 UI 这样做的正确方法是什么 列表定义 listView new ListView var
  • C++ 成员函数中的“if (!this)”有多糟糕?

    如果我遇到旧代码if this return 在应用程序中 这种风险有多严重 它是一个危险的定时炸弹 需要立即在应用程序范围内进行搜索和销毁工作 还是更像是一种可以悄悄留在原处的代码气味 我不打算writing当然 执行此操作的代码 相反
  • 将 viewbag 从操作控制器传递到部分视图

    我有一个带有部分视图的 mvc 视图 控制器中有一个 ActionResult 方法 它将返回 PartialView 因此 我需要将 ViewBag 数据从 ActionResult 方法传递到 Partial View 这是我的控制器

随机推荐

  • 毕业设计 单片机多功能红外空调遥控器 - 嵌入式 物联网

    文章目录 0 前言 1 简介 2 主要器件 3 实现效果 4 硬件设计 空调遥控器原理 原理图 解码IR信号 5 软件说明 代码 与Homekit进行连接 5 最后 0 前言 这两年开始毕业设计和毕业答辩的要求和难度不断提升 传统的毕设题目
  • 解放军进行野营拉练,晴天每天走35千米,雨天每天走28千米时,11天一共走了350千米。这期间晴天共有多少天?

    include
  • 银行利率bps是什么意思,贷款利率bps是什么意思

    银行贷款合同中有一个 基准利率的单位是BPs 是什么意思 1 BP P basispoint 1BP 0 01 是指利差的最下变动单位 BPS bps是bp复数 basicpoint 2 基准利率是金融市场上具有普遍参照作用的利率 其他利率
  • matplotlib 中 plt.tight_layout()

    目录 1 问题 2 解决方法 3 案例 3 1 代码 3 2 结果 4 加上plt tight layout 后 4 1 代码 4 2 结果 1 问题 1 在 matplotlib 中 轴域 包括子图 的位置以标准化图形坐标指定 可能发生的
  • RAID详解与配置

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 一 RAID阵列详解 1 RAID级别 2 RAID0 条带化存储 3 RAID1 镜像存储 4 RAID5 条带加检验 5 RAID1 0 先做镜象 再做条带 6
  • AttributeError: ‘sqlalchemy.cimmutabledict.immutabledict‘ object has no attribute ‘setdefault‘

    原因和解决办法 AttributeError sqlalchemy cimmutabledict immutabledict object has no attribute setdefault 本报错是因为SQLAlchemy版本过高导致
  • vmwere安装ubuntu记录

    一 vmwere安装ubuntu 不选静默安装 先安装空的虚拟机 再从虚拟光盘启动ubuntu镜像 方便语言 时区等信息的选择 二 允许root登陆 1 sudo passwd root 2 sudo vim usr share light
  • 标准签到题

    链接 https ac nowcoder com acm contest 6840 H 来源 牛客网 题目描述 在大家的努力下 终于要进行第一届ACM集训队的选拔赛了 华华和辉辉商议了一下 准备一起给这次比赛出题 那么既然是比赛 为了不难为
  • cout顺序,i++和++i,*p++和*++p

    1 cout输出流顺序 cout是从右到左读取参数 如果参数是函数 则先执行函数体 再将返回的值压栈 否则直接将值压栈 最后再将栈中的值输出来 include
  • 【ChatGPT】用ChatGPT和通义千问写2023年高考语文作文——全国甲卷

    试题内容 阅读下面的材料 根据要求写作 60分 人们因技术发展得以更好地掌控时间 但也有人因此成了时间的仆人 这句话引发了你怎样的联想与思考 请写一篇文章 要求 选准角度 确定立意 明确文体 自拟标题 不要套作 不得抄袭 不得泄露个人信息
  • 题目 1017: [编程入门]完数的判断

    题目描述 一个数如果恰好等于不包含它本身所有因子之和 这个数就称为 完数 例如 6的因子为1 2 3 而6 1 2 3 因此6是 完数 编程序找出N之内的所有完数 并按下面格式输出其因子 核心和关键是如何求因数 双循环 使用if i j 0
  • Redis集群方案及实现

    之前做了一个Redis的集群方案 跑了小半年 线上运行的很稳定 差不多可以跟大家分享下经验 前面写了一篇文章 数据在线服务的一些探索经验 可以做为背景阅读 应用 我们的Redis集群主要承担了以下服务 1 实时推荐 2 用户画像 3 诚信分
  • 扩展欧几里得算法求特解以及通解

    扩展欧几里得算法 裴蜀定理 百度百科上的解释 裴蜀定理 或贝祖定理 得名于法国数学家艾蒂安 裴蜀 说明了对任何整数a b和它们的最大公约数d 关于未知数x和y的线性不定方程 称为裴蜀等式 若a b是整数 且gcd a b d 那么对于任意的
  • 软件测试报告包含哪些内容?

    软件测试报告一般包含以下内容 1 引言 目的 背景 缩略语 参考文献 2 测试概述 测试目的 项目介绍 测试目标 3 测试资源 测试人员 测试软硬件环境及配置 测试环境的网络拓扑 4 测试参考资料 在测试过程中所参考的文献资料等 5 测试进
  • moviepy简介及安装

    专栏 Python基础教程目录 专栏 使用PyQt开发图形界面Python应用 专栏 PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一 概述 MoviePy是一个用于视频编辑的Python模块 可用于进行视频的基本操作 如
  • 特征工程(补充)--特征组合

    特征组合变化也属于特征选择的一种手段 这部分工作可发挥的空间就看你的想像力和经验了 这里的组合变化远不限于把已有的特征加减乘除 比如Kernel Tricks之类 举个比较有想像力的例子 现在市面上社交网络里面 你可能认识的人 的推荐算法几
  • 用通俗易懂的方式讲解大模型分布式训练并行技术:概述

    近年来 随着Transformer MOE架构的提出 使得深度学习模型轻松突破上万亿规模参数 传统的单机单卡模式已经无法满足超大模型进行训练的要求 因此 我们需要基于单机多卡 甚至是多机多卡进行分布式大模型的训练 而利用AI集群 使深度学习
  • linux配置sonarqube遇到的坑

    1 9000端口开了 sonar配置的9000端口 但是连接失败 sonar localhost linux x86 64 curl http localhost 9000 curl 7 Failed connect to localhos
  • Python记4(NumPy计算库

    目录 1 安装NumPy库 2 数组属性 3 创建数组 array 列表 或者array 元组 3 1 多维数组 3 2 数据类型 3 3 创建特殊的数组 3 4 asarray 将列表或元组转化为数组对象 3 5改变数组形状 reshap
  • c++ static修饰变量、函数、对象、数组

    文章目录 static相关语法 一 static 修饰变量 修饰局部变量 修饰全局变量 修饰类中变量 内存初始化时机 二 static修饰函数 修饰普通函数 全局静态函数 修饰类中的函数 静态成员函数 三 static修饰类对象 stati