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

内置类型成员变量的初始化详解

在 C++ 中,内置类型(如 intfloatdoublechar、指针等)的初始化方式与类类型(如 std::string、自定义类)不同。由于内置类型没有构造函数,它们的初始化行为由编译器直接处理。以下是详细解析:

类中的内置类型成员初始化

在类中,内置类型成员的初始化方式取决于:

  1. 是否有类内声明默认值?

  2. 是否在构造函数初始化列表中显式初始化?

情况 1:无默认值 + 无显式初始化 → 随机值

cpp

class Foo {int x;  // 未初始化
public:Foo() {}  // x 的值是随机的
};
  • 行为x 没有赋值行为,值是内存残留数据(UB)。

情况 2:有类内默认值 → 使用默认值

cpp

class Bar {int x = 42;  // 类内默认值
public:Bar() {}     // Bar():x(42) {}
};
  • 行为:编译器在构造函数中插入 x (42) 的代码,生成的目标文件中构造函数会有x赋值42的硬编码指令。

情况 3:显式初始化列表 → 覆盖默认值

cpp

class Baz {int x = 42;  // 类内默认值
public:Baz() : x(100) {}  // x = 100(覆盖默认值)
};
  • 行为:编译器在构造函数中插入 x (100) 的代码,生成的目标文件中构造函数会有x赋值100的硬编码指令。

 


http://www.xdnf.cn/news/255979.html

相关文章:

  • PostgreSQL 的 VACUUM 与 VACUUM FULL 详解
  • 6.DOS
  • 数字世界的“私人车道“:网络切片如何用Python搭建专属通信高速路?
  • 情境领导理论——AI与思维模型【89】
  • 单片机-STM32部分:0、学习资料汇总
  • RISCV的smstateen-ssstateen扩展
  • Flutter——数据库Drift开发详细教程(二)
  • 使用python爬取百度搜索中关于python相关的数据信息
  • 重构编程范式:解码字节跳动 AI 原生 IDE Trae 的技术哲学与实践价值
  • 【数据库】四种连表查询:内连接,外连接,左连接,右连接
  • 【Vue】Vue与UI框架(Element Plus、Ant Design Vue、Vant)
  • 传奇各职业/战士/法师/道士手套/手镯/护腕/神秘腰带爆率及出处产出地/圣战/法神/天尊/祈祷/虹魔/魔血
  • Codex CLI轻量级 AI 编程智能体 :openai又放大招了
  • 西游记4:从弼马温到齐天大圣;太白金星的计划;
  • P1308 统计单词数详解
  • 关于CSDN创作的常用模板内容
  • 人车交叉作业防撞系统介绍
  • 第一章:A Primer on Memory Consistency and Cache Coherence - 2nd Edition
  • 通过具体场景、操作示例和实际命令来具象化 Calico 的功能
  • 动态规划之路径问题1
  • 从括号匹配看栈:数据结构入门的实战与原理
  • 中小企业MES系统需求文档
  • 数控滑台:将制造业推向智能化的关键装备
  • C++_STL
  • 每日算法-250502
  • 【免费】2007-2021年上市公司对外投资数据
  • 专题二十二:DHCP协议
  • (13)Element Plus详细使用方法
  • leetcode 838. 推多米诺 中等
  • 【Linux网络编程】http协议的状态码,常见请求方法以及cookie-session