“值初始化”是什么意思? [复制]

2024-03-13

可能的重复:
以下短语在 C++ 中意味着什么:零初始化、默认初始化和值初始化? https://stackoverflow.com/questions/1613341/what-do-the-following-phrases-mean-in-c-zero-default-and-value-initializat

例如,如果我有一堂课:

class Info
{
   int x;
   int y;
};

我用它来创建一个对象,

Info *p = new Info();

Info 旁边的括号是否意味着我值得初始化它?和这个有什么不同Info *p = new Info; ?

我知道有一个question https://stackoverflow.com/questions/620137/do-the-parentheses-after-the-type-name-make-a-difference-with-new/620402#620402它区分新旧 C++ 语言中的不同含义,但我想知道默认值初始化和值初始化之间的语义差异,例如值初始化是否意味着将某些内容初始化为零?


声明的变量可以是零初始化, 值初始化 or 默认初始化.

在你的例子中:

Info *p = new Info();    <------- Value Initialization
Info *p = new Info;      <------- Default Initialization

C++03 标准 8.5/5 恰当地定义了以下各项:

To 零初始化T 类型的对象意味着:

— 如果 T 是标量类型 (3.9),则将对象设置为转换为 T 的 0(零)值;
— 如果 T 是非联合类类型,则每个非静态数据成员和每个基类子对象
是零初始化的;
— 如果 T 是联合类型,则对象的第一个命名数据成员为零初始化;
— 如果 T 是数组类型,则每个元素均初始化为零;
— 如果 T 是引用类型,则不执行初始化。

To 默认初始化T 类型的对象意味着:
— 如果 T 是非 POD 类类型(第 9 条),则调用 T 的默认构造函数(并且 如果 T 没有可访问的默认构造函数,则初始化是错误的);
— 如果 T 是数组类型,则每个元素都默认初始化;
— 否则,该对象将被零初始化。

To 值初始化T 类型的对象意味着:
— 如果 T 是具有用户声明的构造函数 (12.1) 的类类型(第 9 条),则默认值 调用 T 的构造函数(如果 T 没有可访问的,则初始化是错误的 默认构造函数);
— 如果 T 是没有用户声明的构造函数的非联合类类型,则每个非静态 T 的数据成员和基类组件已进行值初始化;
— 如果 T 是数组类型,则每个元素都是值初始化的;
— 否则,该对象被零初始化

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“值初始化”是什么意思? [复制] 的相关文章

随机推荐

  • Pandas 如何在“loc”之后“替换”工作?

    我已经尝试了很多次 但似乎在使用 loc 后 替换 不能很好地工作 例如 我想将 conlumn b 替换为 conlumn a 值为 apple 的行的正则表达式 这是我的示例代码 df loc df conlumn a apple co
  • 是否可以在 C++ 中声明 switch 作用域之外的变量?

    简而言之 考虑下面的 伪 代码 switch n case 15 keyword customtemplate lt 15 gt t var I want it to be outside of switch break case 255
  • 在 write.csv 函数中指定路径

    我有一个简单的语法问题 有没有办法指定在其中写入 csv 文件的路径 csv函数本身 我总是做以下事情 setwd C Users user Desktop write csv dt my file csv row names F 不过 我
  • Grails:在普通的 groovy 类中获取数据源

    如何从普通的 groovy 类中访问数据源 注入的工作方式与服务不同 原因是我需要从 groovy 类执行一些手动数据库调用 即 使用 groovy sql Sql 类的 SQL 语句 因为我正在使用旧数据库 dataSource是一个自动
  • .NET C# 中的设置操作

    我现在正在研究与粗糙集相关的东西 该项目使用了大量的集合操作和操作 我一直使用字符串操作作为集合操作的权宜之计 它一直工作得很好 直到我们需要通过算法处理一些大量的数据 500 000 条记录 每条记录大约 40 多列 我知道 net 2
  • JSON SCHEMA:我们可以对类型进行非此即彼(字符串/整数)吗?

    我正在做一个架构来验证联系信息 在电话号码验证中 我们有一个国家代码 我真的希望有一种方法可以让国家 地区代码成为string or an integer 来自不同国家 地区的用户告诉我 国家 地区代码中有时会存在有意义的非整数字符 例如
  • Python 中的 PRTime 到日期时间

    我正在编写一个从文件中检索信息的脚本地点 sqlite 历史 并意识到它以 PRTime 格式存储时间 Python 中是否有可用的方法可以转换此日期时间 还是我必须自己制作 PRTime 是自 1970 01 01 以来的微秒数 请参阅h
  • 如何在 Rails 中的 CSV 解析过程中更改编码

    我想知道导入并解析 CSV 文件时如何更改它的编码 我有这个代码 csv CSV parse output headers gt true col sep gt csv each do row row row to hash with in
  • 我安装了 2 个版本的 python,但 cmake 使用的是旧版本。如何强制 cmake 使用较新版本?

    我安装了 2 个版本的 python 但是cmake正在使用旧版本 我该如何强迫cmake使用较新的版本 您可以根据需要尝试以下任一方法 For CMake gt 3 12 根据变更日志 新的 FindPython3 和 FindPytho
  • 字符串格式和十六进制字符

    有人可以解释为什么这不起作用 string f string Format x 0 00 0 5 string o string Format f INSERT TEXT System Diagnostics Debug WriteLine
  • 在 Laravel-Excel 中导出大数据

    使用此代码 我可以将 MyModel 的数据导出到 Excel 工作正常 Excel create Filename function excel excel gt sheet Contratos function sheet datos
  • Docker-machine:找不到 ca.pem

    在这里 我使用 docker 机器创建一个测试机器 dev docker machine create d virtualbox dev Creating CA C Users xxx docker machine certs ca pem
  • 使用 Prolog 中的累加器计算多项式的计算问题

    背景 我需要编写一个谓词 eval P A R 其中 P表示多项式系数列表 即1 2x 3x 2表示为 1 2 3 A 代表 X 的值 R 是 X A 处多项式的结果 Example eval 3 1 2 3 R 产生 R 24 编辑 之前
  • 角度指令 - 要求嵌入?

    我在下面收到错误 我不明白为什么 有任何想法吗 html
  • 当侧面项目具有不同宽度时,保持中间项目居中

    想象一下以下布局 其中点代表框之间的空间 Left box Center box Right box 当我删除右侧的框时 我喜欢中心框仍然位于中心 如下所示 Left box Center box 如果我删除左侧的框 情况也是如此 Cent
  • 使用 C++ 连接数据并将其插入到 MS Access 表中

    我正在开发一个项目 需要我对 MS Access 表执行插入查询 我一直在网上到处搜索 但似乎没有任何效果 任何帮助将不胜感激 另外 我必须为 VS2008 和 Visual C 6 0 编写此内容 谢谢 Use ODBC https le
  • 简单的 XML 解析 XML 到列表

    我使用 Simple XML simple xml 2 6 2 jar 来解析 xml 文件 例如
  • 哪个 MySQL 排序规则比较,例如é 和 e 相等吗?

    编辑 如果不存在这样的排序规则 如果 MySQL 有一个将字符串转换为 ASCII 等价物的函数 我可以解决它 FUNC V re Vaere 可能有几个这样的函数 每个字母表一个 这会很麻烦 但如果有效的话也是可以接受的 我需要一个 My
  • 什么是急切加载?

    什么是急切加载 我用 PHP JS 编码 但更通用的答案就可以了 我看到了很多关于 Java 和 Ruby 的问题 但我对这些语言都一窍不通 而且我发现很难阅读代码 我不知道首先应该做什么 共有三个级别 急切加载 当被要求时你会做一切 典型
  • “值初始化”是什么意思? [复制]

    这个问题在这里已经有答案了 可能的重复 以下短语在 C 中意味着什么 零初始化 默认初始化和值初始化 https stackoverflow com questions 1613341 what do the following phras