C++ 实现单例模式
来源:互联网 发布:找对象软件靠谱吗 编辑:程序博客网 时间:2024/06/06 16:25
实现
#pragma once#include <windows.h>/*使用临界区来枷锁和解锁*/class LockBase{private: // Singleton是LockBase友元,在Singleton类内部可以访问LockBase的私有成员 friend class Singleton; CRITICAL_SECTION cs; void lock() { EnterCriticalSection(&cs); } void unlock() { LeaveCriticalSection(&cs); }public: LockBase() { InitializeCriticalSection(&cs); } ~LockBase() { DeleteCriticalSection(&cs); }};class Singleton{private: static Singleton* instance; Singleton(){}public: static Singleton* getInstance() { // 使用双重检验枷锁机制 if (NULL == instance) { LockBase* lockBase = new LockBase(); lockBase->lock(); if (NULL == instance) { instance = new Singleton(); } lockBase->unlock(); } return instance; }};// 注意C++中静态变量在类内是声明,在类外是定义Singleton* Singleton::instance = NULL;
测试
#include "Singleton.h"#include <iostream>using namespace std;int main(){ Singleton* s1 = Singleton::getInstance(); Singleton* s2 = Singleton::getInstance(); if (s1 == s2) { cout << "s1 和 s2 指向是同一个对象" << endl; } return 0;}
注意
注意代码的细节,注意C++中静态变量的定义是在类外。
1 0
- 设计模式--单例模式 C++实现
- Objective C 中实现单例模式
- Objective C 实现Singleton(单例)模式.
- Objective-C实现单例模式
- 【Objective-C】单例模式的实现
- objective-C 实现单例模式
- 单例模式代码实现(C++)
- 单例模式 (C语言实现)
- Objective-C实现单例模式
- Objective-C单例模式实现
- Objective-C 单例模式的实现
- Objective-c 实现单例设计模式
- c++--Singleton单例模式的实现
- 单例模式,C/C++实现
- 【C++】单例模式之C++实现
- C#单例模式
- C#-单例模式
- 单例模式(C++)
- Java基础 笔记(2)
- hibernate一对一,一对多,多对一,多对多配置
- UVA 193 Graph Coloring
- Android 开源框架Universal-Image-Loader完全解析(三)
- Android ADB工具-管理设备 app(二)
- C++ 实现单例模式
- oracle 安装问题解决办法大全
- 布尔运算
- SQL数据库的分离附加,导出脚本,备份和还原
- hdu 字典树
- CSS3 timing-function: steps()介绍
- 基础知识---计算机各层网络协议 (图)
- struts2学习笔记(十二)多文件上传
- 广度优先搜索