是否有类似Java初始化C++的构造?

Blo*_*aRd 9 c++ java

我在一些文章中读到了java中有一些叫做Initializing的东西; 我们可以在哪里执行一些初始化赋值当加载类或创建实例时.

除了方法和构造函数之外,初始化块是Java程序中可以执行操作的第三个位置.

class InitDemo
{
     static int y;
     int x;
 {
   y = 10;
   x =  0;
 }
}
Run Code Online (Sandbox Code Playgroud)

我在问C++中是否存在这样的范例?谢谢.

Hot*_*cks 5

需要指出的是,Java 中有两种不同形式的初始化块。{...}没有关键字的裸块static只是编译器的一些混乱——块中的文本被附加到任何定义的构造函数的前面——没有生成单独的代码段。static {...另一方面,一个以 开头的块是一个静态初始化块和一个(半)正确的过程(毫不奇怪,它被命名为“静态”)。

static块仅在类加载后立即执行一次(有一些注意事项)。每次执行构造函数时都会执行非静态初始化程序(由于被复制到构造函数中),因此通常不适合静态初始化。