C 等价于 Java 静态块
在 Java 中,静态块提供了一种在实例化类之前初始化静态成员的便捷方法。然而,C 在类中没有静态块。
选项 1:在进程加载时初始化
要在进程加载时实现初始化,请在任何外部使用静态变量类,也称为“翻译单元范围”。
<code class="cpp">// translation-unit-scope-static-initialization.cpp static_block { // Code to initialize your static variables }</code>
选项 2:在类实例化时初始化
因为 C 不允许初始化对于非常量静态成员,我们需要一种间接方法。这是一种解决方法:
<code class="cpp">// static-initialized-via-base-class.cpp class StaticInitialized { public: static bool staticsInitialized = false; virtual void initializeStatics() = 0; }; class MyClass : private StaticInitialized { static int field1; static int field2; private: void initializeStatics() override { // Code to initialize field1 and field2 } };</code>
需要注意的是,这两个选项都不能保证初始化的顺序,因为 C 中的静态变量初始化顺序不是确定性的。
以上是如何在 C 中模仿 Java 静态块:初始化策略和注意事项的详细内容。更多信息请关注PHP中文网其他相关文章!