命名空间
变体
操作

C++ 命名要求: DefaultConstructible

来自 cppreference.cn
 
 
C++ 命名要求
基本
DefaultConstructible(可默认构造)
类型属性
全库范围




Container(容器)
容器元素
迭代器 (Iterator)
流 I/O
格式化器
(C++20)
随机数
并发
(C++11)
Ranges
多维视图
其他

 

指定该类型的一个实例可以被默认构造。

目录

[编辑] 要求

类型 T 满足 DefaultConstructible,如果所有以下语句和表达式都是有效的并具有其指定的效果

 表达式/语句  后置条件
T u; 对象 u默认初始化
T u{}; 对象 u值初始化聚合初始化
T()

T{}

类型 T 的临时对象被 值初始化聚合初始化

[编辑] 注意

对于非聚合类类型的对象,必须定义一个公共的默认构造函数(无论是用户定义的还是隐式定义的)才能满足 DefaultConstructible

非类的非类对象类型的非 const 对象总是 DefaultConstructible

const 非类类型不是 DefaultConstructible

如果 const 聚合类型的任何成员是非类类型的对象,则它们不是 DefaultConstructible

非对象类型(函数类型、引用类型和(可能带 cv 限定符的)类型 void)以及 const 非对象类型从不 DefaultConstructible

[编辑] 缺陷报告

下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。

缺陷报告 应用于 发布时的行为 正确的行为
LWG 724 C++98 缺少 DefaultConstructible 的要求 已添加
LWG 2170 C++98 用空初始化器初始化 DefaultConstructible 类型的对象
只能导致值初始化
也可能导致
聚合初始化

[编辑] 参阅

检查类型是否具有默认构造函数
(类模板) [编辑]
指定类型的对象可以默认构造
(概念) [编辑]