在c++实现单体模式和c#,java有些不同
.h
class Param
{
public:
static Param& GetIntance()
{
return m_param;
}
static Param m_param;
}
.cpp
Param Param::m_param;
看起来比高级语言的单体模式还简单,不用考虑到多线程的问题
如果要求返回指针呢?
//头文件
class Singleton
{
private:
static Singleton *s_instance;
public:
static Singleton* instance();
}
Singleton* Singleton::instance()
{
if (!s_instance)
{
boost::mutex::unique_lock lock(your_mutex); //假设用boost的lock
if(!s_instance) //双重检测
{
s_instance = new Singleton;
}
}
return s_instance;
}
如此高效的避免了,在多线程模式下可能产生多个实例的现象
http://www.cnblogs.com/rush/archive/2011/10/30/2229565.html 写得很不错