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

Bri*_*ian 5 c++ initialization value-initialization

我真的不清楚为什么有人会命名一种特定形式的初始化"值初始化".这听起来就像它的给它的值初始化对象......但是这就是初始化不一般,而且名称不告诉你任何关于珍惜它要使用的初始化.

Sha*_*our 7

升压value_init写了提供的一个相当详细的历史值初始化它从标准的最终缺陷报告178:价值初始化更多,似乎像术语源于缺陷报告35:缺省初始化的定义.虽然这些文件中没有一个确实提供了该术语的正确起源,但它确实提供了一些好的想法,它说:

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

该问题引入了值初始化的新概念(它还修复了零初始化的措辞).非正式地,值初始化类似于默认初始化,但在某些情况下,非静态数据成员和基类子对象也是值初始化的.不同之处在于,值初始化的对象将不具有(或至少不太可能具有)数据成员和基类子对象的不确定值; 与构造对象默认情况不同.(有关规范性描述,请参见核心问题178).

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

和值初始化不太可能使对象具有不确定的值而不是默认初始化.