C ++单例设计模式

最近我遇到了C ++的Singleton设计模式的实现/实现。 它看起来像这样(我从现实生活的例子中采纳了它):

// a lot of methods are omitted here
class Singleton
{
   public:
       static Singleton* getInstance( );
       ~Singleton( );
   private:
       Singleton( );
       static Singleton* instance;
};

从这个声明中,我可以推断实例字段是在堆上启动的。 这意味着有一个内存分配。 对于我来说完全不清楚的是,何时完全释放内存? 还是有一个错误和内存泄漏? 看起来实施中存在问题。

我的主要问题是,我如何以正确的方式实施它?



作为一个单身人士,你通常不希望它被破坏。

当程序终止时,它将被拆除并释放,这对单身人士而言是正常的,理想的行为。 如果你想能够明确地清除它,向类中添加一个静态方法是相当容易的,它允许你将它恢复到干净状态,并在下次使用它时重新分配,但这超出了范围“经典”单身。


你可以避免内存分配。 有多种变体,在多线程环境下都有问题。

我更喜欢这种实现方式(实际上,我不太喜欢这样说,因为我尽可能避免单身人士):

class Singleton
{
private:
   Singleton();

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

它没有动态内存分配。

链接地址: http://www.djcxy.com/p/13829.html

上一篇: C++ Singleton design pattern

下一篇: What is an efficient way to implement a singleton pattern in Java?