【发布时间】:2022-09-21 16:52:20
【问题描述】:
在以下课程中:
struct S {
S() : B{} {}
const uint8_t B[32];
};
B 数组的所有 32 个字节是否保证被默认构造函数初始化为零?
有没有办法创建S 类型的对象,使得B 数组的任何元素都不为零? (没有 const 转换或重新解释内存)。 S 的所有形式的初始化都会导致 B 数组归零吗?
-
你能举例说明你想如何初始化
S::B,而不是将它归零? -
@paolo 我认为希望避免未初始化的字节,而不是将字节初始化为特定的非零值。
-
@paolo:C++ 中有几种不同类型的初始化,它们中的任何一种都可以产生一个具有非零 B 数组元素的 S 对象吗?
-
顺便说一句,在数组被零填充后,你打算用它们做什么?以后更改它们的任何尝试都是未定义的行为。没有任何形式的 const_casting 可以绕过它。
-
@j6t:这是理解语言机制的玩具示例。