C++单例模式
来源:互联网 发布:电信网络代理免费 编辑:程序博客网 时间:2024/06/03 10:40
自从阿里被虐了回来就想写一篇单例模式了,一直拖到现在,从前也查了好多,自我感觉还是一个不错的,背了下来,今天再查资料发现还是漏洞太多了,真的不的不佩服C++是多么的强大啊!~
首先拿我之前的那个来分享:
class CSingleton{public:static CSingleton * GetInstance(){if (NULL == m_pInstance)m_pInstance = new CSingleton();return m_pInstance;}static void Release() //必须,否则会导致内存泄露{if (NULL != m_pInstance){delete m_pInstance;m_pInstance = NULL;}}protected:CSingleton(){cout << "CSingleton" << endl;};static CSingleton * m_pInstance;};CSingleton* CSingleton::m_pInstance = NULL;这个当时我认为还可以,但是拿去阿里面试官那说这个还是有点小问题,然后就说不适合多线程。
今天回来查资料大多都不适合多线程,还有自己又发现了一些错误,可以进行深拷贝和友元可以访问。所以修改如下:
class CSingleton{public:static CSingleton * GetInstance(){if (NULL == m_pInstance){Lock lock(cs);m_pInstance = new CSingleton();}return m_pInstance;}static void Release() //必须,否则会导致内存泄露{if (NULL != m_pInstance){Lock lock(cs);delete m_pInstance;m_pInstance = NULL;}}protected:CSingleton(){cout << "CSingleton" << endl;};static CSingleton * m_pInstance;private:CSingleton();CSingleton(const CSingleton &);CSingleton& operator = (const CSingleton &);};CSingleton* CSingleton::m_pInstance = NULL;
至于如何加锁,VC里边MFC有临界区,其他的也都有,各不相同就不写了!~
0 0
- C#单例模式
- C#-单例模式
- 单例模式(C++)
- 【C++】单例模式
- [C++]单例模式
- 单例模式(C++)
- C ++的单例模式
- 【C++】Chapter17:单例模式
- Object-c单例模式
- Objectove-c单例模式
- Objective C--单例模式
- Objective C--单例模式
- Objective C 单例模式
- Objective C--单例模式
- 单例模式(C#)
- 单例模式(C#)
- object-c 单例模式
- c++-单例模式Singleton
- 《从程序员到项目经理》读书笔记(六):程序员加油站 -- 完美主义也是一种错
- mongodb安装与服务配置
- Fence Repair
- 提交数据get和post的区别
- 触摸屏驱动三部曲之输入子系统
- C++单例模式
- linux下C++的多线程编程
- 排序之基数排序
- $GLOBALS['HTTP_RAW_POST_DATA'] 和$_POST的区别
- getAttribute 和 getParameter 的区别
- Handling unhandled exceptions and signals in iOS App
- 几个提高网站权重的方法
- jsp和servlet的区别
- cocos2dx v3.0 正式版 搭建环境 创建项目 运行到android