是否可以在 C++ 中使用初始化列表设置数组的特定成员?

2024-04-13

我知道您可以使用初始化列表来初始化整个数组,如下所示:

struct s {
    int a[1];
    s (int b): a{b}{}
};

,但是是否可以设置一个特定成员的值?因为这:

struct s {
    int a[1];
    s (int b): a[0]{}
};

不起作用并抛出两个错误:

expected '(' before '[' token  

and

expected '{' before '[' token.

您可以通过将值放置在适当的位置来初始化数组的元素聚合初始化 https://en.cppreference.com/w/cpp/language/aggregate_initialization.

struct s {
    int a[2];
    s (int b): a{b, 0} {} // sets a[0] with the value of b
                          // a[1] is set to zero
};

s foo(1);  
std::cout << foo.a[0] << " " << foo.a[1]; // 1 0

UPDATE(感谢@NathanOliver)

缺少的元素是零初始化 https://en.cppreference.com/w/cpp/language/zero_initialization.

struct s {
    int a[2];
    s (int b): a{b} {} // a[1] is already 0
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以在 C++ 中使用初始化列表设置数组的特定成员? 的相关文章

随机推荐