6

Ben Voigt这里指出:

零初始化是静态初始化的步骤之一。但是你是对的,你不能盲目地替换后者(标签),因为值初始化也执行了零初始化。但是,在 C++ 的上下文中不需要(一个名为的标签)零初始化,因为静态初始化和值初始化的标签已经存在,而且它们更相关。

我认为有一种情况是“零初始化”而不是“静态初始化”“值初始化”或者“零初始化”永远不会在野外发生,我应该使用更具体的诸如:“静态初始化”或“值初始化”之类的术语?

公平地说,我在这些主题上的大部分经验都来自研究这个问题的答案,所以我确信 Ben Voigt 是对的,我只是希望有人能说明原因。

4

1 回答 1

4

零初始化可以自行发生;当使用比数组短的字符串字面量初始化字符数组时,剩余的字符将被初始化为零。但在所有其他情况下,零初始化发生值初始化期间,或者作为初始化具有静态或线程本地存储持续时间的对象的静态初始化步骤(这可以单独发生,或为动态初始化做准备)。

因此,除非您询问字符类型的零表示(并且我看不到该主题中有很多问题),否则其他标签之一将适用,我看不到太多用完标签配额来应用也很有价值。

于 2016-06-09T17:34:08.843 回答