![](/img/trans.png)
[英]Is there a way to zero initialize a struct that is compatible between C and C++
[英]C++ struct with char arrays initialize to zero in unusual way
遇到了一個非常見的c ++初始化代碼,似乎可以正常使用以下代碼...
struct sfoobar { char bar[10]; char foo[10]; };
...
sfoobar x { 0 };
這是將這些char數組初始化為零的可接受方法嗎?
這在C ++中有效。 作為效果sfoobar x { 0 };
將x.bar
和x.foo
所有元素初始化為0
。
根據聚合初始化規則,可以省略嵌套初始化列表的大括號,
嵌套初始化程序列表周圍的大括號可以省略(省略),在這種情況下,必要時使用許多初始化子句來初始化相應子集合的每個成員或元素,后續的初始化子句用於初始化以下成員。賓語。
然后sfoobar x { 0 };
表示將x.bar
的第一個元素初始化為0
,和
如果初始化程序子句的數量小於成員
and bases (since C++17)
或初始化程序列表完全為空,則其余成員and bases (since C++17)
by their default initializers, if provided in the class definition, and otherwise (since C++14)
空列表,按照通常的列表初始化規則(對非類型類和非聚合類使用默認構造函數執行值初始化,以及聚合初始化)對於聚合)。
因此,所有剩余的元素,包括x.bar
的第2到第10個元素以及x.foo
所有元素也將被初始化為0
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.