零初始化,静态初始化和值初始化如何不同?

Jon*_*Mee 6 c++ initialization static-initialization value-initialization

本·福格特曾指出这里是:

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

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

公平地说,我对这些主题的大部分经验都来自于研究这个问题的答案,所以我确定Ben Voigt是对的,我只是想让别人明白为什么.

eca*_*mur 4

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

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