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实现比较有优势。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C++完美实现Singleton模式

  • 2014-05-21 13:04
  • 16KB
  • 下载

C++完美实现Singleton模式

  • 2016-08-01 10:40
  • 102KB
  • 下载

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

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

C++ 实现的singleton 模式

  • 2010-10-08 16:13
  • 615B
  • 下载

每天一个设计模式之Singleton

Link: http://www.oodesign.com/   Singleton 属于Creational Design Patterns 顾名思义,就是只能有一个实例的类。这是最容易理解的一个设...

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

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

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

转载地址:http://hi.baidu.com/uxufgfwvmhfitzr/item/6fd0b82f49aa1fd5a417b630 ------------------------...

设计模式-Singleton模式(只有一个实例)

顾名思义,单例模式也就是在任何情况下都绝对只有一个实例。 Singleton模式对实例的数量就行限制的原因是:当存在多个实例时,实例之间会相互影响,可能会产生意想不到的的Bug;如果此时,能够确...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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