C++ Singleton模式
来源:互联网 发布:访客网络开启安全吗 编辑:程序博客网 时间:2024/05/17 03:01
class Singleton {public: static Singleton& Instance() { static Singleton theSingleton; return theSingleton; } /* more (non-static) functions here */private: Singleton(); // ctor hidden Singleton(Singleton const&); // copy ctor hidden Singleton& operator=(Singleton const&); // assign op. hidden ~Singleton(); // dtor hidden};
在多线程的应用场合下必须小心使用. 如果唯一实例尚未创建时, 有两个线程同时调用创建方法, 且它们均没有检测到唯一实例的存在, 便会同时各自创建一个实例, 这样就有两个实例被构造出来, 从而违反了单例模式中实例唯一的原则. 解决这个问题的办法是为指示类是否已经实例化的变量提供一个互斥锁 (虽然这样会降低效率).
多个 Singleton 实例相互引用的情况下, 需要谨慎处理析构函数. 如: 初始化顺序为 ASingleton » BSingleton » CSingleton 的三个 Singleton 类, 其中 ASingleton BSingleton 的析构函数调用了 CSingleton 实例的成员函数, 程序退出时,CSingleton 的析构函数 将首先被调用, 导致实例无效, 那么后续ASingletonBSingleton 的析构都将失败, 导致程序异常退出.
任意两个 Singleton 类的构造函数不能相互引用对方的实例, 否则会导致程序崩溃. 如:
ASingleton& ASingleton::Instance() { const BSingleton& b = BSingleton::Instance(); static ASingleton theSingleton; return theSingleton;}BSingleton& BSingleton::Instance() { const ASingleton & b = ASingleton::Instance(); static BSingleton theSingleton; return theSingleton;}
- Singleton模式(C++)
- 【C++】实现Singleton模式
- C#.net Singleton 单体模式
- c++-单例模式Singleton
- Singleton设计模式(C++)
- Objective C 实现Singleton(单例)模式.
- ios开发:Objective-C的singleton模式
- Objective —C 单例模式 Singleton
- Objective-C使用单例(Singleton)模式
- 【Object-C】单例模式Singleton
- Object-C单例模式Singleton
- Objective-C中的单例模式(singleton)
- c++--Singleton单例模式的实现
- Swift、Objective-C 单例模式 (Singleton)
- Singleton模式
- Singleton模式
- singleton模式
- Singleton模式
- UTC与字符串的相互转换
- C++程序设计实验报告(三)
- xml解析基础01
- XML解析基础02
- jdbc工具类提取实现学习记录1
- C++ Singleton模式
- use Perl analysis BLAST data
- 序列化开发与迭代开发的选择
- ListView源码
- MySQL Partition扫盲
- 我大学剩下一年半的生活(三)——pythonchallenge之level2
- 测试主机序号的例子(大端序、小端序、big_endian、little_endian)
- 784 - Maze Exploration
- 不同文件之间的变量用const修饰时