为什么值初始化如此命名?

时间:2014-09-03 03:05:03

标签: c++ initialization value-initialization

我真的不清楚为什么有人会说出特定形式的初始化"值初始化"。这听起来好像是通过赋予它一个值来初始化对象......但这是初始化的一般情况,并且名称并没有告诉你关于的任何内容它将用于初始化。

1 个答案:

答案 0 :(得分:7)

Boost value_init write-up提供了值初始化的相当详细的历史记录,它最终出现在defect report 178: More on value-initialization 的标准中,似乎该术语来自defect report 35: Definition of default-initialization。虽然这些文件中没有一个确实提供了该术语的正确来源,但它确实提供了一些好的想法,它说:

  

C ++标准(TC1)的第一份技术勘误,其中   草案于2001年11月向公众发布,介绍了Core   问题178(当然还有许多其他问题)。

     

该问题引入了价值初始化的新概念(它也是   修正了零初始化的措辞)。通俗地说,   value-initialization与默认初始化类似   异常,在某些情况下是非静态数据成员和基类   子对象也是值初始化的。 区别在于   价值初始化的对象不会(或至少更少)   可能有)数据成员和基类的不确定值   子对象;与构造对象默认情况不同。 (看到   核心问题178,用于规范性描述)。

     

为了指定我们需要使用的对象的值初始化   空集初始值设定项:()。

default-initalization 相比,

和值初始化不太可能使对象具有不确定的值。