博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式之单实例模式(Singleton)
阅读量:5104 次
发布时间:2019-06-13

本文共 1008 字,大约阅读时间需要 3 分钟。

原理:将类的构造函数由pubic变为private或者protect,添加获取对象的public 成员函数,返回指向对象的静态指针。

首先来一段简单的代码实现

代码一

class Singleton{public:static Singleton* instance(){	if (pInstance == NULL)	{		return new Singleton();	}	return pInstance;}protected:	Singleton()	{	}private:	static Singleton* pInstance;};Singleton* Singleton::pInstance = NULL;

 上述代码存在内存泄露的问题,由于这个对象是由类本身自己构造的,依据c++对象释放的原则,在哪里创建就在哪里释放的原则,类本身自己需要释放这个对象,如果交给了客户去释放则会造成野指针的情况,虽然智能指针解决了内存泄露的问题,但是没有解决内存野指针的问题。如果在整个程序运行期间多个指针指向堆内存,就会造成野指针的现象,但是单实例模式采用的是静态只能指针,即在整个程序运行完成之后才会释放堆内存可以满足要求,无需share_ptr。

代码二

#include 
#include
#include "iostream"using namespace std;class Singleton{public:static Singleton* instance(){ if (ptrInstance.get() == NULL) { ptrInstance.reset(new Singleton()); } return ptrInstance.get();}protected: Singleton() { }private: //static Singleton* pInstance; static auto_ptr
ptrInstance;};auto_ptr
Singleton::ptrInstance;

 

转载于:https://www.cnblogs.com/liuweilinlin/p/3197789.html

你可能感兴趣的文章
C语言中 关键字static的作用有哪些,快速了解C语言静态关键字static的作用
查看>>
c语言动态输入字符数组的长度,【分享】C语言动态长度字符串
查看>>
c语言编程技术分享,技术分享:C语言编程
查看>>
c语言之模块化编程思想,第8期:嵌入式C语言的模块化编程发布
查看>>
python算法优化c语言,用C语言优化python核心类
查看>>
android viewpager 上下滚动条,简单几行代码让ViewPager实现垂直滑动效果
查看>>
android 获取电话标记,Android 唯一标识获取
查看>>
android showatlocation 参数,Android Popwindow使用总结
查看>>
measure app android,Measure app performance
查看>>
android mvp设计书籍,Android MVP设计架构学习
查看>>
android cmake 静态库,使用Gradle / Android Studio为Android构建独立静态库
查看>>
html页面中加粗标签有几种 有什么区别,来认识一下HTML中的标签~
查看>>
html在文本的属性中不能设置,在网页dreamweaver中,在表格属性面板中,不能设置表格的()...
查看>>
html radio读数据库 展示,html中 radio 怎样从SQL数据库中读出数据
查看>>
html中设计对联,js实现很实用的对联广告代码 可自适应高度
查看>>
spring设置html文件响应头,Spring MVC 4:拦截器无法设置响应头
查看>>
html辅助方法大全,【ASP.NET MVC】HTML辅助方法
查看>>
ubuntu15.04 安装搜狗输入法
查看>>
装饰者模式
查看>>
简易的个人信息验证网页
查看>>