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

Zero initialize multidimentional array in class constructor C++

本文关键字:数组 初始化 构造函数      更新时间:2023-10-16

是否有一种方法(带有C 11)可以在类构造函数中零inialize a 多维数组?

这将整个数组初始化为零或仅限第一个维度?

class Example
{
public:
    int array[100][100];
    Example():array{}
    {
    };
};

最后,这将与枚举类型一起使用?

数组中的值initialization将在数组中的每个元素进行价值initialial。您有一个数组数组,因此每个元素(数组)都将被值进行价值化。从那里,返回每个数组发生的事情的答案的第一句话。

您第二个问题的答案是,常规枚举是标量,因此是价值限制的,就像您数组中的int值一样,也就是说它们是 Zero Zero-Initialialized 。如果您有没有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仅寻找 例如,这三个值将被判处孤立(此后不久,您可能会使用它)。

最佳幸运

值初始化(即用 {})用于多维数组的所有元素,因此所有10000个元素都具有值0。