-1

我有一个程序有一个全局类实例,我想将其转换为单例。有人可以给我一个关于如何最好地做到这一点的简单例子吗?

谢谢

4

1 回答 1

1

关于以下内容的单身人士:

class Singleton
{
public:
  static Singleton & instance()
  {
    static Singleton s;
    return s;
  }

private:
  Singleton();
  Singleton(const Singleton &);
};

当您第一次尝试访问它时,分配/初始化单例。这使得在源文件之间以不可预测的顺序初始化的全局对象更具可预测性。

而不是 global static Singleton s;,您必须在Singleton::instance()每次访问它时调用它。

编辑:在单例的情况下,只有一个类实例,你可以通过静态函数访问,我通常称它为实例或获取,但你可以随意调用它。其余与任何普通类相同。

我忘了提到在 C++ 中你必须将复制构造函数设为私有。单例不能有任何公共构造函数。

instance()函数返回隐藏的“全局变量”,因此您可以使用它。假设您的单例中有一个名为 str 的字符串。你可以设置它Singleton::instance().str = "something";

于 2012-08-11T03:29:51.707 回答