概述
单例模式是最简单也是比较常用的一个模式,通常用于资源的管理类。
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++实现单例模式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复