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

C++变量的自动初始化

文章目录

  • 变量的自动初始化
    • 1 全局变量、静态变量
    • 2 栈上变量
    • 3 堆上变量
      • 内置基础类型
      • 类类型
    • 4 值初始化

变量的自动初始化

1 全局变量、静态变量

全局变量、静态变量会自动进行零初始化。

静态局部变量,是在第一次执行到定义处自动进行零初始化。

2 栈上变量

栈上的基础类型变量,不会进行初始化,拥有不可预测的值。

栈上的类对象的成员变量,如果是基础类型,不会进行初始化;如果是类类型,且有默认构造函数,则会自动调用默认构造函数。

3 堆上变量

内置基础类型

堆上的int、double等内置基础类型对象(使用 new 创建),不会进行初始化,拥有不可预测的值。(内存可能保留旧的垃圾值)

int * p = new int; // 分配堆内存,不做初始化,内存保留旧的垃圾值,拥有不可预测的值 int * p2 = new int(); // 零初始化,置0 int * p3 = new int{}; // 零初始化,置0

类类型

在堆上的类对象(使用 new 创建),如果有默认构造函数,则会自动调用默认构造函数;
而类中的内置基础类型,如果在调用的构造函数中没有手动初始化,则依然不会被自动初始化,拥有不可预测的值;
类中的类类型成员,如果有默认构造函数,则会自动调用默认构造函数。

MyClass * my_class = new MyClass; // 分配堆内存,如果有默认构造函数,则调用

4 值初始化

不管在栈上还是堆上,如果使用了空的初始化列表{}对类进行初始化,例如MyClass{},会将类的成员进行值初始化。

初始化列表{}触发值初始化,值初始化行为分两条分支(C++ 标准规则):

  1. 聚合类,即没有用户声明的默认构造函数的类。值初始化过程会将所有成员零初始化。
  2. 有用户自定义的默认构造函数(无论是否空实现)。值初始化会调用用户自定义的默认构造函数,不会自动帮你把内置成员清零,内置成员是什么值,完全看你的构造函数有没有手动赋值。
http://www.cnnetsun.cn/news/4195033.html

相关文章:

  • 数据不通,穿透就是空话——国资数据治理的三道坎
  • 16-SOFA_仿真背后的力学(总结)
  • 救场Minecraft存档:Minecraft Region Fixer免费修复损坏区块的完整指南
  • 重复造轮子很蠢,但我还是自己写了一套博客系统
  • DeepSeek Harness 安装全指南:踩过版本与空间的坑,带你顺利启动插件化 Agent 框架
  • DeepSeek Harness 从零入门完全指南:从环境搭建到推理评测微调实战
  • 手撕hot100之图论!看完这篇就AC~(二)
  • 基于SpringBoot的滑雪售票系统设计与实现(毕设源码+文档)
  • 按键精灵OSS文件上传工具|高效自动化阿里云对象存储上传方案
  • Windows 10 / 11 企业版 LTSC 微软商店安装
  • 云原生笔记9
  • 从单智能体到多Agent协作:基于Dify构建复杂任务处理系统实战
  • 单片机毕设项目:基于 51/STM32 单片机的温度烟雾火焰采集与消防执行机构控制系统 基于 51/STM32 单片机的小型场所智能火灾应急处置系统设计(017604)
  • MLLM引导语义校正:解决AI视频生成语义不一致的工程实践
  • OpenClaw Skills深度解析:Filesystem与WebSearch两大核心技能实战指南
  • TT-AMX:在Apple Silicon Mac上实现Tensor-Train模型高效推理的完整指南
  • 构建可移植AI个人档案:解决模型迭代痛点,实现跨平台一致体验
  • MES软件五个战略计划:从数字化转型到智能工厂的完整落地路径
  • 30亿Token如何高效开发游戏?DeepSeek辅助游戏开发实战指南
  • 如何找到本地靠谱的焊接变位机工厂?
  • android启动流程与速度优化
  • 【计算机毕业设计单片机案例】基于 STM32 的环境感知自动通风采光控制系统设计 基于 STM32 单片机的参数阈值自定义智能家居控制系统设计(018204)
  • 【单片机毕业设计】基于 51/STM32 单片机的声光报警消防智能控制装置设计与实现 基于 51/STM32 单片机的火灾监测与水泵通风设备联动系统设计(017604)
  • 【单片机毕业设计】基于 51 单片机的 LCD1602 环境数据显示与智能排风系统设计 基于 STM32 室内多维度空气质量检测与声光报警装置开发(017804)
  • 对话式经营咨询系统:从自然语言理解到数据映射的工程实践
  • NHSE 动物森友会存档编辑器完整教程:十分钟改好一份 main.dat
  • FMA 音乐数据集:10 万级曲库到流派分类 baseline 的 30 分钟接入路径
  • 从零构建AI自动化代理:基于my_ai_town项目的核心原理与工程实践
  • 风险清单批注:法务审一审之前的 AI 预筛怎么做
  • 合同译英文:术语表先行,每段后面插译文