零在类构造函数C++中初始化多维数组

Mat*_*eld 2 c++ constructor initialization multidimensional-array c++11

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

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

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

    Example():array{}
    {
    };
};
Run Code Online (Sandbox Code Playgroud)

最后,这将使用枚举类型吗?

Who*_*aig 6

数组的值初始化将对数组中的每个元素进行值初始化.您有一个数组数组,因此每个元素(一个数组)都将进行值初始化.从那里,返回到每个数组发生的事情的答案的第一句话.

第二个问题的答案,常规枚举是标量,因此是值初始化的,就像你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';
    }
}
Run Code Online (Sandbox Code Playgroud)

没有0值EnumStuff.请记住一些事情.一个switch寻找只有这三个值,例如,将是非常-失望(此后不久,可能你用它).

祝你好运