当前位置: 首页 > news >正文

【DeepSeek 学C+】effective modern c+ 条款七 初始化

文章目录

  • 1. 非静态成员变量在类内初始化,时会分配内存吗 ?什么时候分配内存,
  • 2. 大括号可以为非静态成员指定默认初始值。 那静态成员函数呢
  • 3. 静态成员变量什么时候分配内存
  • 4.静态成员变量需要在类外定义和初始化, 为什么呢?
  • 5。 什么是静态局部变量

1. 非静态成员变量在类内初始化,时会分配内存吗 ?什么时候分配内存,

在这里插入图片描述

2. 大括号可以为非静态成员指定默认初始值。 那静态成员函数呢

静态成员变量需要在类外定义和初始化
声明不分配内存。 定义并初始化时分配内存。
在这里插入图片描述

3. 静态成员变量什么时候分配内存

在C++中,静态成员变量需要在类外进行定义和初始化,这样编译器才能分配内存。例如,在类中声明static int x;,然后在cpp文件中写int MyClass::x = 0;。这时候,内存应该是在程序启动时,全局变量初始化阶段分配的。

另外,C++17引入了内联变量,允许在类内部直接初始化静态成员变量,比如inline static int x = 0;。这时候,内存分配可能还是在程序启动时,但不需要在cpp文件中单独定义了。
在这里插入图片描述

4.静态成员变量需要在类外定义和初始化, 为什么呢?

C++的One Definition Rule(ODR),即每个变量只能有一个定义。类内的声明只是告诉编译器有这个变量存在,但实际的内存分配必须在一个翻译单元中完成。这样做的原因是为了避免重复定义,确保所有使用该静态变量的地方都引用同一个实例。
在这里插入图片描述

在这里插入图片描述

5。 什么是静态局部变量

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

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

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

在这里插入图片描述

相关文章:

  • 【c++】【STL】unordered_set 底层实现(简略版)
  • k8s 配置imagePullSecrets仓库认证
  • SpringMVC全局异常处理机制
  • Android SDK下载安装配置
  • 多无人车协同探索开源包启动文件介绍(下)
  • 【FAQ】HarmonyOS SDK 闭源开放能力 —Push Kit(10)
  • LVGL和其他图形库区别于联系
  • Spring Boot Actuator 自定义健康检查(附Demo)
  • AI安全、大模型安全研究(DeepSeek)
  • 3. 轴指令(omron 机器自动化控制器)——>MC_SetPosition
  • Python(数据结构概念,算法时间效率衡量,链表)
  • Oracle GoldenGate (OGG) 安装、使用及常见故障处理
  • 英伟达黄仁勋2025GTC演讲深度解析:液冷GPU、AI工厂、机器人AI…...
  • 【NoC仿真器(nirgam noxim)搭建】自用笔记
  • Debian 12系统中允许Root远程SSH登录解决方法!
  • python 数据可视化TVTK库安装与使用
  • RabbitMQ 集群搭建步驟
  • TG电报群管理机器人定制开发的重要性
  • C语言问题总结(二)
  • 数据分析的12个挑战及其解决方法
  • 巴基斯坦外长:近期军事回应是自卫措施
  • 国际足联女子世界杯再次扩军,2031年起增至48支球队
  • 小米回应SU7Ultra排位模式限制车辆动力:暂停推送更新
  • 上海科创“八杰”赋能新兴产业链:硬核科技,形成良好盈利模式
  • 山东滕州车祸致6人遇难,肇事司机已被刑事拘留
  • 中标多家学校采购项目的App查成绩需付费?涉事公司回应