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

时间:2016-06-09 16:54:45

标签: c++ initialization static-initialization value-initialization

Ben Voigt已指出here

  

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

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

为了公平起见,我对这些主题的大部分经验来自于研究this question的答案,所以我确定Ben Voigt是对的,我只是喜欢有人拼写为什么。

1 个答案:

答案 0 :(得分:4)

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

因此,除非您询问字符类型的零表示(并且我在该主题中看不到很多问题),否则将适用其他标记,我在使用您的代码配额时也看不出有多大价值来应用