虽然 C 不直接支持类内的静态代码块,但解决方法是在类外使用静态代码块类。这种方法允许在类加载期间或加载包含的 DLL 时执行代码。
要实现此目的,您可以创建一个静态在翻译单元范围内阻止,通常在类的实现文件中。例如:
<code class="cpp">static_block { // Here you can perform initialization code std::cout << "Hello static block world!\n"; }</code>
通过使用如上所示的 static_block,所包含的代码将在 main() 函数之前运行。
对于此选项,请考虑以下类结构:
<code class="cpp">class StaticInitialized { public: static bool staticsInitialized = false; virtual void initializeStatics(); StaticInitialized() { if (!staticsInitialized) { initializeStatics(); staticsInitialized = true; } } }; class MyClass : private StaticInitialized { public: static int field1; static int field2; protected: void initializeStatics() { // Here you can perform initialization code specific to MyClass field1 = 42; field2 = 100; } };</code>
在此示例中,initializeStatics() 函数是虚拟的,可以在派生类中重写以实现特定的初始化逻辑。 StaticsInitialized 标志确保初始化代码在创建类的任何实例之前仅运行一次。
以上是如何在不使用类的情况下在 C 中实现静态代码块?的详细内容。更多信息请关注PHP中文网其他相关文章!