首页  >  文章  >  后端开发  >  如何在没有静态构造函数的情况下在 C 中初始化静态数据成员?

如何在没有静态构造函数的情况下在 C 中初始化静态数据成员?

Linda Hamilton
Linda Hamilton原创
2024-11-09 01:17:02671浏览

How Can You Initialize Static Data Members in C   Without a Static Constructor?

C 中的静态构造函数:初始化静态数据成员

静态数据成员是在类中声明的变量,在该类的所有实例之间共享班级。在 Java 和 C# 等语言中,可以在创建任何实例之前使用静态构造函数来初始化这些成员。然而,C 没有指定的静态构造函数。

要在 C 中实现类似的功能,另一种方法是为静态数据创建一个单独的类。它的工作原理如下:

class StaticStuff {
  // Read-only vector of characters
  std::vector<char> letters_;

public:
  StaticStuff() {
    for (char c = 'a'; c <= 'z'; c++) {
      letters_.push_back(c);
    }
  }

  // Getter method to access letters_
  const std::vector<char>& getLetters() const { return letters_; }
};

class Elsewhere {
  static StaticStuff staticStuff_; // Initialize once
};

在此示例中,StaticStuff 保存静态数据成员 l​​etter_。当程序启动时,StaticStuff的构造函数将运行一次,自动用正确的字符初始化letters_。然后,Elsewhere 的实例可以通过 StaticStuff 的静态实例访问 letter_,而无需显式初始化它。

此方法提供了一种干净高效的方法来初始化 C 中的静态数据成员,而无需诉诸丑陋的黑客或不必要的检查在实例构造函数中。

以上是如何在没有静态构造函数的情况下在 C 中初始化静态数据成员?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn