【发布时间】:2021-12-09 14:55:07
【问题描述】:
我想知道 std::array 将所有字段初始化为零
struct Foo {
int a;
int b;
std::uint32_t c : 16;
std::uint32_t d : 16;
};
class Bar {
public:
std::array<Foo, 2> foo;
}
foo 的所有字段都初始化为零?
【问题讨论】:
标签: c++
我想知道 std::array 将所有字段初始化为零
struct Foo {
int a;
int b;
std::uint32_t c : 16;
std::uint32_t d : 16;
};
class Bar {
public:
std::array<Foo, 2> foo;
}
foo 的所有字段都初始化为零?
【问题讨论】:
标签: c++
std::array 是一个聚合类。当您默认初始化聚合时,聚合的成员也默认初始化。默认初始化整数不会将其初始化为零。如果您对聚合进行值初始化,那么聚合的成员也会进行值初始化。整数的值初始化是零初始化。
简而言之:没有。
【讨论】:
没有。你应该这样做:
class Bar {
public:
std::array<Foo, 2> foo = {};
}
或者
class Bar {
public:
std::array<Foo, 2> foo = std::array<Foo, 2>();
}
【讨论】: