问题描述
鉴于此数组声明和初始化:
std::array<bool,20> invalid_params{};
我可以假设数组中的所有元素总是被初始化为 false,还是明确地初始化更好?
解决方法
保证用 false
值填充。
std::array
是一个聚合,因此它没有用户定义的构造函数,因此 value-initializing 它执行 zero-initialization。
但是如果您删除 {}
(将其转换为默认初始化),元素将未初始化。
文档说:“默认初始化可能会导致非类 T 的值不确定”。所以,看来你不能假设它会被初始化。