在传达在main()
之前初始化的对象时,通常将其称为“静态初始化”。是否有相反的标准术语,例如“静态反初始化”?这指的是这些静态对象何时被销毁(退出main()
之后)。
答案 0 :(得分:2)
这里的问题是您试图从功能的角度描述流程。这不适用于C ++,因为我们没有“静态初始化”或在main()
之前运行的函数/代码的概念。
在C ++中,在main()
之前/之后运行代码的方式是通过对象的构造/销毁。因此,您必须根据这些概念来描述流程。
您所说的“静态初始化”实际上是静态存储持续时间对象的构造。现在,当您使用此短语时,C ++程序员将立即认出它并畏缩(因为您必须了解所有相关的复杂性)。
反对的是:破坏静态存储持续时间对象。
这些是您应该使用的术语。
这些将把您正在寻找的确切含义传达给其他经验丰富的程序员。
C ++中有4种对象。
每种类型在创建和销毁时都有特定的时间。
此外,还有关于是否先将基础内存初始化为零的规则。
然后有关于何时调用对象构造函数/析构函数的规则(如果对象类型具有构造函数/析构函数)。
对于“静态存储持续时间”对象,可以在main之前构造它们。但这要比这复杂一些(因为有些是在需要时延迟构造的,而另一些则是在访问名称空间之后才构造的。)
但是,销毁顺序已明确定义。这与构造完全相反。因此,所有“静态存储持续时间”对象都将按照与构建完全相反的顺序销毁(在main完成后)。当对象被销毁时,将调用其析构函数(如果有的话)。
答案 1 :(得分:1)
无论对象是静态的还是动态的,调用析构函数时发生的动作都是“破坏”。
这种特殊情况将是“静态对象破坏”,与“静态对象初始化”相反。
答案 2 :(得分:0)
我将其称为“静态构造函数”和“静态析构函数”。发音比“反初始化”容易。