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

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

Linda Hamilton
发布: 2024-11-09 01:17:02
原创
718 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板