c++单例

#include <stdio.h>
#include <iostream>
using namespace std;

class A
{
public:
	void printA(){printf("hello A");}
};

template<typename T>
class singleton
{
private:
	singleton();
	singleton(const singleton&);
	singleton& operator=(const singleton&);
	~singleton();

public:
	static T* get_instance()
	{
		if(m_instance == NULL)
		{
			//CGuard(m_lock)
			if(m_instance == NULL)
			    m_instance = new T;
		}
		return m_instance;
	}

private:
	static T*  m_instance;
};

template<typename T> T* singleton<T>::m_instance = NULL;

int main( int argc, const char** argv )
{
	singleton<A>::get_instance()->printA();
	return 0;
}

 

posted on 2014-10-28 23:27  kangbry  阅读(135)  评论(0编辑  收藏  举报

导航