为什么值初始化如此命名

Why is value initialization so named?

本文关键字:初始化 为什么      更新时间:2023-10-16

我真的不清楚为什么有人会将特定形式的初始化命名为"值初始化"。听起来好像是通过给对象一个值来初始化它。。。但初始化通常就是这样做的,并且名称不会告诉您任何关于它将用于初始化的值的信息。

Boost value_init写入提供了值初始化的相当详细的历史它最终出现在缺陷报告178的标准中:更多关于值初始化的信息,这个术语似乎源于缺陷报告35:默认初始化的定义。尽管这些文件都没有真正为这个词提供一个合适的来源,但它确实提供了一些好的想法,它说:

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

该问题引入了价值初始化的新概念(修正了零初始化的措辞)。非正式地,值初始化类似于默认初始化在某些情况下非静态数据成员和基类的异常子对象也被值初始化不同之处在于值初始化的对象将没有(或至少更少可能具有)数据成员和基类的不确定值子对象;不同于对象默认构造的情况。(参见规范性说明的核心问题178)

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

默认初始化相比,值初始化不太可能给对象留下不确定的值。