gpt4 book ai didi

c++ - 仅初始化结构或数组的前 n 个成员

转载 作者:行者123 更新时间:2023-12-01 13:16:32 26 4
gpt4 key购买 nike

我正在使用 RAD studio 10.2 附带的 clang 编译器(我认为是 c++ 11)。我今天错误地发现可以使用通常的大括号来分配结构或数组的前 n 个成员,例如

int a[500]={1};
struct {int a,b,c;} st={2,3};

上面的编译和工作正常,但我从来没有遇到过这个或见过它以前使用过,我在网上找不到它的提及(也许我正在使用错误类型的措辞进行搜索)。这个 C++ 有文档吗?

最佳答案

对于 aggregate initialization ,

(强调我的)

If the number of initializer clauses is less than the number of members and bases (since C++17) or initializer list is completely empty, the remaining members and bases (since C++17) are initialized by their default member initializers, if provided in the class definition, and otherwise (since C++14) by empty lists, in accordance with the usual list-initialization rules (which performs value-initialization for non-class types and non-aggregate classes with default constructors, and aggregate initialization for aggregates).



这意味着,对于 int a[500]={1}; ,第一个元素被初始化为 1并且数组的其余 499 个元素被值初始化为 0 .对于 struct {int a,b,c;} st={2,3}; ,成员(member) a初始化为 2b初始化为 3 , 最后一位成员 c被初始化为 0也。

关于c++ - 仅初始化结构或数组的前 n 个成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60266345/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com