网上看到好多单例的代码,但是好多写的有点问题,就是没有销毁代理。
就是利用静态变量,在程序退出时,会自动销毁,直接上代码,也可以将下面的图片另存为一个rar文件即可。
注意:记得要在源文件中初始化静态变量,否则最后也不能销毁单例指针。
1、头文件
#ifndef __CSINGLETON_H__
#define __CSINGLETON_H__
class CSingleton
{
public:
~CSingleton(void);
public:
static CSingleton * GetInstance();
private:
/**
*@brief 私有构造函数,用于单例
*/
CSingleton();
/**静态实例*/
static CSingleton * m_pInstance_;
/** @brief 它的唯一工作就是在析构函数中删除CSingleton的实例 */
class CGarbo
{
public:
~CGarbo()
{
if (CSingleton::m_pInstance_)
{
delete CSingleton::m_pInstance_;
}
}
};
static CGarbo Garbo; // 定义一个静态成员,在程序结束时,系统会调用它的析构函数
};
#endif // __CSINGLETON_H__
2、源文件
#include "Singleton.h"
/**静态变量初始化*/
CSingleton * CSingleton::m_pInstance_ = NULL;
CSingleton::CGarbo CSingleton::Garbo;
/** @brief 缺省构造函数 */
CSingleton::CSingleton(void)
{
}
/** @brief 缺省释构函数 */
CSingleton::~CSingleton(void)
{
}
/** @brief 获取配置文件管理类 */
CSingleton * CSingleton::GetInstance()
{
if(m_pInstance_ == NULL)
{
m_pInstance_ = new CSingleton();
}
return m_pInstance_;
}