C 中的静态初始化:静态构造函数的替代方案
在 C 中,初始化私有静态数据成员可能会带来挑战,因为缺乏静态构造函数。然而,有一个优雅的解决方案,可以镜像其他语言中静态构造函数的功能。
使用单独的类
要模拟静态初始化,请创建一个单独的普通类保存静态数据并在需要它的类中声明此类的静态实例。例如:
// StaticStuff class holds static data class StaticStuff { std::vector<char> letters_; public: // Constructor initializes data StaticStuff() { for (char c = 'a'; c <= 'z'; c++) letters_.push_back(c); } // Provide access to static data std::vector<char>& letters() { return letters_; } }; // Class that uses static data class C { // Static instance of StaticStuff (initialized once) static StaticStuff staticStuff; };
在此示例中,StaticStuff 保存静态数据 letter_,其构造函数在第一次实例化时对其进行初始化。静态实例 staticStuff 在 C 中声明,提供对 C 类中静态数据的访问。
优点
这种方法有几个好处:
以上是如何在 C 中模拟静态构造函数?的详细内容。更多信息请关注PHP中文网其他相关文章!