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?