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

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

Ben Voigt已指出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" 是有意义的而不是 "Static-Initializing""Value-Initializing"还是“零初始化”永远不会在野外发生,我应该使用更具体的术语,如:“静态初始化”或“值初始化”?

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

最佳答案

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

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

关于c++ - 零初始化、静态初始化和值初始化有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37732000/

相关文章:

c++ - g++ 未报告未实例化模板中的某些错误

C++动态初始化常量静态 vector

Java 合法前向引用

java - Java 中 <clinit> 方法可以执行多少次?

c++ - 在 OpenCV 中绘制矩形

C++:多重继承中类对象的意外大小

swift - 如何满足包含初始值设定项的协议(protocol)?

c++ - 在 C++ 中,内置类型的简单初始化是否不受静态初始化顺序失败的影响?

java - 如果您想成为 Java/C++ 程序员,是否必须学习数据结构?

c - 这个指针初始化是必要的吗?