C++ named requirements: DefaultConstructible
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
指定该类型的实例可被默认构造。
目录 |
要求
类型
T
满足
DefaultConstructible
当且仅当下列所有语句和表达式均有效且具有其指定效果:
| 表达式/语句 | 后置条件 |
|---|---|
| T u ; | 对象 u 被 默认初始化 。 |
| T u { } ; | 对象 u 被 值初始化 或 聚合初始化 。 |
|
T
(
)
T { } |
类型为
T
的临时对象被
值初始化
或
聚合初始化
。
|
注释
对于非聚合类类型的对象,必须定义(无论是用户定义还是隐式定义)一个公开的 默认构造函数 ,以满足 DefaultConstructible 要求。
非类对象类型的 非常量对象 始终是 DefaultConstructible 。
非常量非类类型不是 DefaultConstructible 。
常量聚合类型若其任何成员属于非类类型的对象,则不可 默认构造 。
非对象类型(函数类型、引用类型以及(可能带有 cv 限定符的) void 类型)以及常量非对象类型永远不满足 DefaultConstructible 要求。
缺陷报告
下列行为变更缺陷报告被追溯应用于先前发布的C++标准。
| 缺陷报告 | 适用标准 | 发布时行为 | 正确行为 |
|---|---|---|---|
| LWG 724 | C++98 | 缺少对 DefaultConstructible 类型的要求 | 已补充 |
| LWG 2170 | C++98 |
使用空初始化器初始化
DefaultConstructible
类型的对象
只能进行值初始化 |
也可进行
聚合初始化 |
另请参阅
|
(C++11)
(C++11)
(C++11)
|
检查类型是否拥有默认构造函数
(类模板) |
|
(C++20)
|
指定一个类型的对象可被默认构造
(概念) |