静态初始化的反义词是什么?

What is the opposite of static initialization?

当通信在 main() 之前初始化的对象时,我们通常将其称为 "static initialization"。是否有与之相反的标准术语,例如 "static de-initialization"?这指的是那些静态对象何时被销毁(退出后main())。

我会称之为 "static constructor" 和 "static destructor"。比"de-initialization".

更容易发音

这里的问题是您试图从功能角度描述流程。这不适用于 C++,因为我们没有 "static initialization" 或 functions/code 的概念,即 main().

之前的 运行

在 C++ 中,运行 代码 before/after main() 的方法是通过对象的 construction/destruction。所以你必须用这些概念来描述过程。

你说的"static initialization"其实就是静态存储时长对象的构造。现在,当你使用这个短语时,C++ 程序员会立即认出它并畏缩(因为你必须了解所有相关的复杂性)。

与此相反的是:销毁静态存储持续时间对象。

这些是您应该使用的术语。
这些将向其他有经验的程序员传达您正在寻找的确切含义。

有关存储持续时间对象的更多详细信息:

C++ 中有 4 种类型的对象。

  1. 静态存储持续时间对象
  2. 动态存储持续时间对象
  3. 自动存储持续时间对象
  4. 线程存储持续时间对象。

每种类型都有特定的创建和销毁时间。

此外底层内存是否先初始化为零也有规定

然后有关于对象constructor/destructor何时被调用的规则(如果对象类型有constructors/destructors)。

静态存储持续时间对象

对于 "Static Storage Duration" 对象,它们可以在 main 之前构造。但它比这要复杂一点(因为有些是在需要时惰性构造的,而另一些是在访问命名空间后才构造的)。

但是 销毁的顺序是 100% 明确定义的。这是完全相反的构造顺序。因此,所有 "Static Storage Duration" 对象都将按照与构造完全相反的顺序销毁(在 main 完成后)。当对象被销毁时,它的析构函数被调用(如果它有一个)。

无论对象是静态的还是动态的,调用析构函数时发生的动作是"destruction"。

这个特殊情况将是 "static object destruction",与 "static object initialization" 相反。