我有以下数据结构
struct single_t
{
uint16_t i1 = 0;
uint8_t i2 = 0;
uint8_t i3 = 0;
};
struct mapping_t
{
uint8_t n1;
uint8_t n2;
bool enable;
uint n3;
std::array<single_t, 32> map;
};我想以以下方式初始化它们:
mapping_t m1 {
3, // n1
254, // n2
true, // enable
5, // n3
// map
// i1 i2 i3
{{
{0x1000, 1, 8}
}}
};我能否确定,std::array<single_t, 32> map;中的元素(在本例中为索引1.31)被初始化为0,还是类似于堆栈int i;上的未初始化变量?我的调试器显示它们在0,但是该实现是依赖于调试构建,还是在标准中定义的?
发布于 2017-02-25 08:30:36
来自initialization
如果初始化子句的数量小于成员数或初始化程序列表完全为空,则其余成员为值初始化。如果引用类型的成员是这些剩余成员之一,则程序是不正确的。
值初始化的默认情况是使用0初始化。
请参阅initialization
值初始化的效果如下: ..。 4)否则,对象为零初始化。
好了,你没事!
https://stackoverflow.com/questions/42453497
复制相似问题