我有以下数据结构

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,但是该实现取决于调试版本还是在标准中定义?

最佳答案

http://en.cppreference.com/w/cpp/language/aggregate_initialization



值初始化的默认情况是用0初始化

参见http://en.cppreference.com/w/cpp/language/value_initialization



概括地说,你很好!

10-06 00:27
查看更多