singleton C++ 的多种实现
来源:互联网 发布:南宁鸡村网络 编辑:程序博客网 时间:2024/06/04 19:40
一:第一种实现。最直接的实现。
#include <memory>
class CSingletonClass
{
friend class std::auto_ptr<CSingletonClass>; //才能delete CSingletonClass
public :
static CSingletonClass* GetInstance()
{
if (NULL == m_apInstance.get())
{
m_apInstance.reset(new CSingletonClass());
}
return m_apInstance.get();
}
protected:
static std::auto_ptr<CSingletonClass> m_apInstance;
private:
CSingletonClass(){} //阻止生成实例
~CSingletonClass(){} //防止删除获得的实例,然后再生成新实例
CSingletonClass(const CSingletonClass &); //防止复制对象,其实没什么用
CSingletonClass& operator = (const CSingletonClass &); //防止赋值,跟复制一样没什么用,因为构造函数一夫当关。但可以阻止自己赋值给自己
};
std::auto_ptr<CSingletonClass> CSingletonClass::m_apInstance; //初始化静态成员
int _tmain(int argc, _TCHAR* argv[])
{
CSingletonClass* pSingleton = CSingletonClass::GetInstance();
//以下不能通过编译
//CSingletonClass singleton;
//CSingletonClass singletonCopyCtor(*pSingleton);
//*pSingleton = *pSingleton;
return 0;
}
第二种实现:使用工厂方法,进行单例的创建,工厂方法负责创建、销毁实例。
class CSingleton
{
friend class CSingletonFactory; //提供创建CSingleton实例的通道
public:
void print()
{
std::cout<<"Singleton Instance"<<std::endl;
}
//其它一些成员。
//阻止外面创建
private:
CSingleton(){}
~CSingleton(){}
CSingleton(const CSingleton &);
CSingleton& operator = (const CSingleton &);
};
class CSingletonFactory
{
public:
static CSingleton* GetInstance()
{
return &m_instance;
}
protected:
static CSingleton m_instance;
};
CSingleton CSingletonFactory::m_instance;
- singleton C++ 的多种实现
- 多种方法实现singleton
- c++--Singleton单例模式的实现
- 【C++】实现Singleton模式
- 队列的多种C语言实现
- 栈的多种C语言实现
- linux c之sleep的多种实现
- C/C++/VC 实现字符串逆转的多种方法
- C++用多种方式实现Singleton单例模式
- Objective —C 的单例模式 Singleton实现
- objective-c 单例模式Singleton的实现
- Objective-C 中singleton(单例模式)的实现
- Objective-C 中singleton(单例模式)的实现
- Singleton的安全实现!
- Singleton的各种实现
- Singleton 的使用实现
- Singleton的各种实现
- singleton的实现代码
- 听高手所言,一切从API开始
- CSS学习文档、CSS背景图片的定位background-position的问题
- 3列布局左右自适应中间固定
- 婚姻是实力的较量。 恋爱是双方的博弈。
- 100109 阶段总结
- singleton C++ 的多种实现
- sphinx中文分词mmseg的一个bug
- ...
- VML初始教程
- 数据挖掘中易犯的10个错误
- Skype - 更新 - 4.0.4.121
- 什么是MTU
- 大学生活小结--大二上
- 委托示例代码(1)