将std :: array `中的元素作为类成员进行默认初始化

问题描述 投票:0回答:1

考虑:

class x {
    std::array<int, 4> data_;

public:
    x() /*no reference to data_ here*/ {}
};

int中的data_元素是否置零,或者它们的值不确定?

通过扩展名在这种情况下也是如此:

class x {
    std::variant<std::array<int, 4> /*other stuff here*/> data_;

public:
    x() /*no reference to data here*/ {
        data_.emplace<std::array<int, 4>>(/* no args */);
    }
};
c++ constructor initialization stdarray std-variant
1个回答
2
投票

std::array documentation的构造函数部分中,我们可以看到:

按照std::array的规则初始化数组(请注意,默认初始化可能会导致非类T的值不确定)>

重点矿

根据您的情况,您有一个aggregate initializationstd::array<int>匹配非类类型的定义,因此“默认初始化可能会导致不确定的值”

© www.soinside.com 2019 - 2024. All rights reserved.