我是靠谱客的博主 高高果汁,这篇文章主要介绍设计模式:C++实现单例模式,现在分享给大家,希望可以做个参考。

单例模式是最简单也是比较常用的一个模式,通常用于资源的管理类。

C++实现单例模式很简单:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream> using namespace std; class SingleObj { public: static SingleObj& getInstance() { static SingleObj s_singleObj; return s_singleObj; } private: SingleObj() = default; SingleObj(const SingleObj& s) = delete; SingleObj(SingleObj&& s) = delete; SingleObj& operator=(const SingleObj& s) = delete; SingleObj& operator=(const SingleObj&& s) = delete; ~SingleObj() = default; }; int main () { SingleObj& singleObj1 = SingleObj::getInstance(); SingleObj& singleObj2 = SingleObj::getInstance(); cout<<&singleObj1<<endl; cout<<&singleObj2<<endl; return 0; }

运行程序输出:

0x4030c0
0x4030c0

可见对象singleObj1和singleObj2实际上对同一个对象的引用

 以下几点说明:

1.在C++11之前,多线程环境下产生静态变量是线程不安全的,也就是多个线程可能会产生了多个静态变量;但是C++11后已经保证了静态变量生成的线程安全性。

2.用户可以根据需要定义构造函数,以供getInstance产生对象。

3.需要禁用拷贝构造,移动构造,赋值,移动赋值函数,毕竟只有单个实例,对单个实例调用这些函数是无道理的。

4.对于析构函数,因为对象不会在栈上创建,因此可以将其定义为private。

最后

以上就是高高果汁最近收集整理的关于设计模式:C++实现单例模式的全部内容,更多相关设计模式内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(84)

评论列表共有 0 条评论

立即
投稿
返回
顶部