我是靠谱客的博主 高高果汁,最近开发中收集的这篇文章主要介绍设计模式:C++实现单例模式,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

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

#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++实现单例模式的全部内容,希望文章能够帮你解决设计模式:C++实现单例模式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部