⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 singleton.cpp

📁 financal instrument pricing using c
💻 CPP
字号:
// Singleton.cpp
//
// Header file for modified Singleton pattern in which the destruction
// of the Singleton takes place in a Destroyer object, thus resolving
// a major problem in the classic Gamma Singleton pattern.
//
// The Destroyer class is templated while clients can create subclasses 
// of Singleton to suit their needs.
//
// Last modification dates:
//
// 1998-7-7		DD	Kick-off date
// 1998-9-15	RD	Code review, polishing up
//
// (C) Datasim Education BV 1998


#ifndef Singleton_cpp
#define Singleton_cpp

#include "Singleton.hpp"


template<class TYPE> 
Destroyer<TYPE>::Destroyer()
{ // Default constructor

	doomed_object=0;
}

template<class TYPE> 
Destroyer<TYPE>::Destroyer(TYPE* t)	
{ // Constructor with reference to object to be destroyed

	doomed_object=t;
}

template<class TYPE>
Destroyer<TYPE>::Destroyer(const Destroyer<TYPE>& source)
{ // Copy constructor. Not allowed
}

template<class TYPE>
Destroyer<TYPE>& Destroyer<TYPE>::operator = (const Destroyer<TYPE>& source)
{ // Assignment operator. Not allowed

	return *this;
}

template<class TYPE> 
Destroyer<TYPE>::~Destroyer()	
{ // Destructor 
 
	delete doomed_object;
}

template<class TYPE> 
void Destroyer<TYPE>::doomed(TYPE* t)	
{ // Set the doomed object 

	doomed_object=t;
}


// Templated Singleton code
template<class TYPE> TYPE* Singleton<TYPE>::ins=0;
template<class TYPE> Destroyer<TYPE> Singleton<TYPE>::des;


template<class TYPE>
Singleton<TYPE>::Singleton()
{ // Default constructor
}

template<class TYPE>
Singleton<TYPE>::Singleton(const Singleton<TYPE>& source)
{ // Copy constructor
}

template<class TYPE>
Singleton<TYPE>::~Singleton()
{ // Destructor

	int x;
	x=0;
}

template<class TYPE> 
TYPE* Singleton<TYPE>::instance()
{ // Return the singleton instance

	if (ins==0)
	{
		ins=new TYPE;
		des.doomed(ins);
	}

	return ins;
}

template<class TYPE>
Singleton<TYPE>& Singleton<TYPE>::operator = (const Singleton<TYPE>& source)
{ // Assignment operator
	
	return *this;
}

#endif	// Singleton_cpp

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -