静态初始化的对立面是什么?

时间:2018-09-17 14:58:40

标签: c++ terminology

在传达在main()之前初始化的对象时,通常将其称为“静态初始化”。是否有相反的标准术语,例如“静态反初始化”?这指的是这些静态对象何时被销毁(退出main()之后)。

3 个答案:

答案 0 :(得分:2)

这里的问题是您试图从功能的角度描述流程。这不适用于C ++,因为我们没有“静态初始化”或在main()之前运行的函数/代码的概念。

在C ++中,在main()之前/之后运行代码的方式是通过对象的构造/销毁。因此,您必须根据这些概念来描述流程。

您所说的“静态初始化”实际上是静态存储持续时间对象的构造。现在,当您使用此短语时,C ++程序员将立即认出它并畏缩(因为您必须了解所有相关的复杂性)。

反对的是:破坏静态存储持续时间对象。

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

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

C ++中有4种对象。

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

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

此外,还有关于是否先将基础内存初始化为零的规则。

然后有关于何时调用对象构造函数/析构函数的规则(如果对象类型具有构造函数/析构函数)。

静态存储持续时间对象

对于“静态存储持续时间”对象,可以在main之前构造它们。但这要比这复杂一些(因为有些是在需要时延迟构造的,而另一些则是在访问名称空间之后才构造的。)

但是,销毁顺序已明确定义。这与构造完全相反。因此,所有“静态存储持续时间”对象都将按照与构建完全相反的顺序销毁(在main完成后)。当对象被销毁时,将调用其析构函数(如果有的话)。

答案 1 :(得分:1)

无论对象是静态的还是动态的,调用析构函数时发生的动作都是“破坏”。

这种特殊情况将是“静态对象破坏”,与“静态对象初始化”相反。

答案 2 :(得分:0)

我将其称为“静态构造函数”和“静态析构函数”。发音比“反初始化”容易。