零初始化、静态初始化和值初始化有何不同?

How Do Zero-Initialization, Static-Initialization, and Value-Initialization Differ?

Ben Voigt has pointed out here 即:

Zero initialization is one of the steps of static initialization. But you're right that you can't blindly substitute the latter (tag), since zero initialization is also performed for value initialization. However, there's no need for (a tag named) zero-initialization in the context of C++, because tags already exist for both static initialization and value initialization, and those are more relevant.

我认为在某种情况下 "Zero-Initialize" rather than "Static-Initializing" or "Value-Initializing" 是有意义的,或者 "Zero-Initialization" 永远不会在野外发生,我应该使用更具体的术语,例如:"Static-Initialization"或 "Value-Initialization"?

公平地说,我在这些主题上的大部分经验都来自研究 this question 的答案,所以我确定 Ben Voigt 是对的,我只是希望有人能拼写为什么。

零初始化可以单独发生;当使用比数组短的字符串文字初始化字符数组时,其余字符将被零初始化。但在所有其他情况下,零初始化发生在 during value-initialization,或 as 使用 static 或 thread 初始化对象的静态初始化步骤-本地存储持续时间(这可以单独发生,也可以为动态初始化做准备)。

因此,除非您询问的是字符类型的零表示(而且我看不到该主题中有很多问题),否则其他标签之一也是 or will apply, and I can't see much value in using up your tag quota to apply