安全地初始化 std::array 个布尔值
Safely initializing a std::array of bools
鉴于此数组声明和初始化:
std::array<bool, 20> invalid_params{};
我可以假设数组中的所有元素总是初始化为 false,还是显式初始化更好?
保证填充 false
个值。
std::array
是一个集合,因此它没有用户定义的构造函数,因此 value-initializing it performs zero-initialization.
但是如果你删除{}
(把它变成默认初始化),元素将不会被初始化。
文档说:“默认初始化可能会导致非 class T 的不确定值”。所以,看来你不能假设它会被初始化。
鉴于此数组声明和初始化:
std::array<bool, 20> invalid_params{};
我可以假设数组中的所有元素总是初始化为 false,还是显式初始化更好?
保证填充 false
个值。
std::array
是一个集合,因此它没有用户定义的构造函数,因此 value-initializing it performs zero-initialization.
但是如果你删除{}
(把它变成默认初始化),元素将不会被初始化。
文档说:“默认初始化可能会导致非 class T 的不确定值”。所以,看来你不能假设它会被初始化。