单例类
指在整个系统生命期中,一个类最多只能有一个实例(instance)存在,使得该实例的唯一性(实例是指一个对象指针)
需要重载赋值和构造函数
template <class T>
class BaseSingleton
{
private:
static T* m_pInstance;
class Garbo
{
public:
~Garbo()
{
if (BaseSingleton::m_pInstance)
{
delete BaseSingleton::m_pInstance;
BaseSingleton::m_pInstance = 0;
}
}
};
static Garbo garbo;
BaseSingleton(const BaseSingleton& cop)=delete;
BaseSingleton& operator = (const BaseSingleton& rightObj)=delete;
protected:
BaseSingleton() {}
~BaseSingleton() {}
public:
static T* GetInstance()
{
if (m_pInstance == 0)
m_pInstance = new T();
return m_pInstance;
}
};
template <class T>
T* BaseSingleton<T>::m_pInstance = 0;
class Test : public BaseSingleton<Test>
{
public:
Test() {}
~Test() {}
void print()
{
printf("Test print!\n");
}
private:
};

921

被折叠的 条评论
为什么被折叠?



