int i {};
這是串列初始化還是值初始化?
我無法區分它們,因為我無法理解這句話:來自鏈接的可能為空的括號括起來的運算式串列或嵌套的括號初始化串列:https : //en.cppreference.com/w/cpp/language /list_initialization
uj5u.com熱心網友回復:
這是串列初始化還是值初始化?
它是直接串列初始化
T object { arg1, arg2, ... }; (1)直接串列初始化(考慮顯式和非顯式建構式)
- 使用花括號初始化器串列(即可能為空的花括號括起來的運算式串列或嵌套花括號初始化器串列)初始化命名變數
并且對的影響T是值初始化
解釋
型別 T 的物件的串列初始化的效果是:
[...]
- 否則,如果花括號初始化串列沒有元素,
T則是值初始化的。
現在對于integer的值初始化,您將得到零初始化。
解釋
在這些情況下執行值初始化:
[...]
- 否則,物件是零初始化的。
uj5u.com熱心網友回復:
是 List 還是 Value 初始化取決于你正在初始化的物件。請參閱https://en.cppreference.com/w/cpp/language/value_initialization:
如果 T 是一個沒有默認建構式但有一個采用 std::initializer_list 的建構式的型別別,則執行串列初始化。
因此,由于在這種情況下的物件int沒有采用std::initializer_list的構造函式并且int不是聚合型別,因此這是值初始化。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/349112.html
上一篇:如何在std::string中硬編碼或宣告檔案的內容
下一篇:使用Makefile創建兩個輸出
