C++ 命名要求: DefaultConstructible
來自 cppreference.com
指定該型別的一個例項可以被預設構造。
目錄 |
[編輯] 要求
型別 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 型別的物件 只能導致值初始化 |
也可能導致 聚合初始化 |
[編輯] 參閱
檢查型別是否具有預設建構函式 (類模板) | |
(C++20) |
指定型別的物件可以預設構造 (概念) |