Singleton模式的一个实现

原创 2006年05月21日 00:20:00

设计模式上的singleton模式是声明了一个static的Singleton指针,当getInstance被调用的时候再new出一个对象然后赋值给这个指针。然而这样会有一个问题,即这个new出来的对象应该何时释放?如果只是内存没有释放问题还不大,但是如果这个Singleton还占有资源,而程序退出还没有释放就会有问题了。

这里有一个Singleton的实现:

class CSingleton
{
private:
 CSingleton()
 {
  std::cout << "Singleton contructed!" << std::endl;
 }
 ~CSingleton()
 {
  std::cout << "Singleton destructed!" << std::endl;
  system("pause");
 }
public:
 static CSingleton* getInstance()
 {
  static CSingleton instance;
  return &instance;
 }
};

这样,当程序结束时就会调用这个Singleton的解析函数。而且由于instance是个局部变量,如果getInstance没有调用,instance对象也不会被初始化。

下面是测试程序:


int _tmain(int argc, _TCHAR* argv[])
{
 std::cout << "Start!" << std::endl;
 CSingleton* singleton = CSingleton::getInstance();
 std::cout << "End!" << std::endl;
 return 0;
}

 

输出结果是:

Start!
Singleton contructed!
End!
Singleton destructed!

可以看出这种singleton实现比较有优势。

单例模式(Singleton)的6种实现

  • 2017年11月02日 11:14
  • 1.17MB
  • 下载

C++完美实现Singleton模式

  • 2014年05月21日 13:04
  • 16KB
  • 下载

如何用C++写一个Singleton 单例模式

单例模式是比较常用的设计模式,尤其是在游戏设计中会经常用到,在面试中也是非常容易被问到和实现。今天我们来看看如何用C++来实现一个singleton。 单例模式的主要特性是只能实例化一个对象,在游戏...

C++完美实现Singleton模式

  • 2016年08月01日 10:40
  • 102KB
  • 下载

Java 写一个单例模式(Singleton)出来

第一种:饱汉模式 public class SingleTon {  private SingleTon(){ } //实例化放在静态代码块里可提高程序的执行效率,但也可能更占用空间 ...
  • zpf336
  • zpf336
  • 2014年09月25日 21:41
  • 7245

C++ 实现的singleton 模式

  • 2010年10月08日 16:13
  • 615B
  • 下载

Singleton设计模式(一个类只允许一个实例)

Singleton设计模式 我们知道,Singleton设计模式要求一个类class只能有一个实例instance存在,下面用C++来实现: #include #include u...

每天一个设计模式之Singleton

Link: http://www.oodesign.com/   Singleton 属于Creational Design Patterns 顾名思义,就是只能有一个实例的类。这是最容易理解的一个设...
  • OnlyQi
  • OnlyQi
  • 2011年04月23日 16:34
  • 825

一个比较完善的C++ Singleton模式类

转载地址:http://hi.baidu.com/uxufgfwvmhfitzr/item/6fd0b82f49aa1fd5a417b630 ------------------------...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Singleton模式的一个实现
举报原因:
原因补充:

(最多只允许输入30个字)