自动销毁单例指针

网上看到好多单例的代码,但是好多写的有点问题,就是没有销毁代理。

就是利用静态变量,在程序退出时,会自动销毁,直接上代码,也可以将下面的图片另存为一个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_;
}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值