从全局变换转换为单变量

时间:2012-08-11 03:19:20

标签: c++

我有一个程序有一个全局类实例,我想将其转换为单例。有人能给我一个关于如何做到最好的快速例子吗?

由于

1 个答案:

答案 0 :(得分:1)

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

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

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

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

您需要在每次访问时调用static Singleton s;,而不是全局Singleton::instance()

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

我忘了提到在c ++中你必须将复制构造函数设为私有。单身人士不能拥有任何公共建设者。

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

进行设置