[=10th=] 构造函数 C++ 中的零初始化多维数组

Zero initialize multidimentional array in class constructor C++

有没有办法(使用 C++11)在 class 构造函数中对 多维 数组进行零初始化?

这是将整个数组初始化为零还是仅初始化第一维?

class Example
{
public:
    int array[100][100];

    Example():array{}
    {
    };
};

最后,这是否适用于枚举类型?

多维数组的值初始化(即 {})对所有元素进行值初始化,因此所有 10000 个元素的值为 0。

数组的值初始化将对数组中的每个元素进行值初始化。您有一个数组数组,因此每个元素(一个数组)都将被值初始化。从那里,return 到这个答案的第一句,了解每个数组会发生什么。

第二个问题的答案,常规枚举是标量,因此是值初始化的,就像数组中的 int 值一样,也就是说它们是 零初始化。如果你有一个没有 0 值表示的枚举,那 可能 有问题:

#include <iostream>

enum EnumStuff
{
    one = 1,
    two = 2,
    three = 3
};

int main()
{
    EnumStuff arr[10][10]{};
    for (auto const&x : arr)
    {
        for (auto y : x)
            std::cout << static_cast<int>(y) << ' ';
        std::cout << '\n';
    }
}

EnumStuff 中没有 0 值。只是要记住一些事情。 switch 只寻找 这三个值,例如,将非常失望(此后不久,您可能会失望)。

祝你好运