是否有办法(使用C ++ 11)在类构造函数中初始化多维数组?
这会将整个数组初始化为零还是仅初始化第一维?
class Example
{
public:
int array[100][100];
Example():array{}
{
};
};
最后,这是否适用于枚举类型?
答案 0 :(得分:6)
数组的值初始化将对数组中的每个元素进行值初始化。您有一个数组数组,因此每个元素(一个数组)都将进行值初始化。从那里,返回到每个数组发生的事情的答案的第一句话。
第二个问题的答案,常规枚举是标量,因此是值初始化的,就像数组中的int
值一样,也就是说它们零初始化< / em>的。如果您的枚举没有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
仅查找 这三个值将会非常失望(此后不久,很可能会使用它)。
祝你好运
答案 1 :(得分:2)
多维数组的值初始化(即{}
)值初始化所有元素,因此所有10000个元素的值都为0。