干杯和hth。- Alf 在这个答案中评论说,与 C++98 相比,值初始化可以说是 C++03 的一个新特性。我想知道他是什么意思。
值初始化是C++98 的一部分吗?它是否存在于概念中但不在名称中?为什么将它添加到 C++03 标准中?
我有 '03 标准的副本,但没有 '98 标准的副本。这里是默认初始化和值初始化的定义。
默认初始化 T 类型的对象意味着:
— 如果 T 是非 POD 类类型(第 9 条),则调用 T 的默认构造函数(如果 T 没有可访问的默认构造函数,则初始化是非良构的);
— 如果 T 是数组类型,则每个元素都是默认初始化的;
— 否则,对象被零初始化。
对 T 类型的对象进行值初始化意味着:
— 如果 T 是具有用户声明的构造函数 (12.1) 的类类型(第 9 条),则调用 T 的默认构造函数(如果 T 没有可访问的默认构造函数,则初始化是错误的);
— 如果 T 是没有用户声明的构造函数的非联合类类型,则 T 的每个非静态数据成员和基类组件都是值初始化的;
— 如果 T 是一个数组类型,那么每个元素都是值初始化的;
— 否则,对象被零初始化
我的猜测是 '98 有默认初始化,但没有值初始化,两者之间存在一些关键区别。老实说,我在这里解析标准语时遇到了麻烦,我不明白定义之间的区别。