为什么值初始化如此命名
Why is value initialization so named?
我真的不清楚为什么有人会将特定形式的初始化命名为"值初始化"。听起来好像是通过给对象一个值来初始化它。。。但初始化通常就是这样做的,并且名称不会告诉您任何关于它将用于初始化的值的信息。
Boost value_init写入提供了值初始化的相当详细的历史它最终出现在缺陷报告178的标准中:更多关于值初始化的信息,这个术语似乎源于缺陷报告35:默认初始化的定义。尽管这些文件都没有真正为这个词提供一个合适的来源,但它确实提供了一些好的想法,它说:
C++标准(TC1)的第一个技术勘误表,其草案于2001年11月向公众发布,引入Core第178期(当然还有许多其他问题)。
该问题引入了价值初始化的新概念(修正了零初始化的措辞)。非正式地,值初始化类似于默认初始化在某些情况下非静态数据成员和基类的异常子对象也被值初始化不同之处在于值初始化的对象将没有(或至少更少可能具有)数据成员和基类的不确定值子对象;不同于对象默认构造的情况。(参见规范性说明的核心问题178)
为了指定对象的值初始化,我们需要使用空集初始值设定项:()。
与默认初始化相比,值初始化不太可能给对象留下不确定的值。
相关文章:
- 为什么在C++中首先初始化成员类
- (C++)为什么静态成员可以在初始化之前使用
- 为什么用结构初始化数组需要指定结构名称
- 为什么std::vector和std::valarray初始化构造函数不同
- 为什么这种直接初始化有效?(C++17)
- 为什么 zlib 放气初始化调用一次不起作用?
- 为什么C++常量模板化向量在使用之前没有初始化?
- 为什么C++有不同的变量初始化方式?
- 为什么除了继承聚合结构之外,结构为空,无法聚合初始化?
- 模板参数列表中的 false 在模板初始化期间计算为什么?
- 为什么我在初始化带大括号的结构时出错?
- 为什么thread_local变量在这里从未初始化?
- 在 Python 和 c++ 2d 数组初始化之间.这是怎麽?为什么呢?
- 为什么 'main' 函数中的局部 int 变量会自动初始化?
- 为什么初始化时没有调用重载赋值运算符?
- 为什么通过指针编译时不能分配 const 初始化
- 为什么 gcc 会给我可能未初始化的警告 deque::insert 带有过滤范围
- 为什么我的 c++ 程序检查不是初始化的变量?
- 复制初始化:为什么即使关闭了复制省略,也没有调用move或copy构造函数
- 'goto label'跳过了'unused'的初始化 - 为什么我为 std::string 获取它而不是 int?