Singleton单例类模式
body, table{font-family: 微软雅黑; font-size: 10pt}
table{border-collapse: collapse; border: solid gray; border-width: 2px 0 2px 0;}
th{border: 1px solid gray; padding: 4px; background-color: #DDD;}
td{border: 1px solid gray; padding: 4px;}
tr:nth-child(2n){background-color: #f8f8f8;}
#include <iostream>
#include<stdio.h>
using namespace std;
class Singleton
{
private:
Singleton() //声明为私有,防止类外调用
{
cout<<"Singleton()"<<endl;
}
~Singleton()
{
cout<<"~Singleton()"<<endl;
}
static Singleton * _pInstance;
public:
static Singleton * getInstance() //保证类只有一个实例
{
if(_pInstance==NULL)
{
_pInstance = new Singleton;
}
return _pInstance;
}
static void destroy()
{
cout<<"destroy()"<<endl;
delete _pInstance; //因为是静态的,一次delete就全部删除了
//delete p1;
}
};
Singleton * Singleton::_pInstance = NULL;
|
int main()
{
Singleton * p1 = Singleton::getInstance();
//对象才能调用成员函数,所以getInstance()必须为static
Singleton * p2 = Singleton::getInstance();
Singleton * p3 = Singleton::getInstance();
printf("p1=%p\n",p1);
printf("p2=%p\n",p2);
printf("p3=%p\n",p3);
Singleton::destroy();
//delete p1; 释放一个还有其他的指针还在
return 0;
}
//这个单例类有一个bug,就是多次申请虽然内存中只有一个对象,但是却有多个指针保存这个对象的地址,当对象释放的时候,其他指针就变成野指针了;
//改进,static Singleton& getInstance()
static Singleton& getInstance()
{
if(_pInstance==NULL)
{
_pInstance = new Singleton;
}
return *_pInstance; //返回一个对象引用;
}
Singleton &p1 = Singleton::getInstance();
|
Singleton单例类模式的更多相关文章
- Unity Singleton 单例类(Unity3D开发之二十)
猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/47335197 ...
- Unity Singleton 单例类(Unity3D开发)
一.添加单例模板类 using UnityEngine; public class Singleton<T> : MonoBehaviour where T : MonoBehaviour ...
- C++中的单例类模板
1,本节课讲述单例类模式,实现并抽取相关代码实现单例类模板,在以后开发工作 中,如果想要使用单例模式,那么直接使用今天开发的单例类模板就可以: 2,需求的提出: 1,在架构设计时,某些类在整个系统生命 ...
- [Android面试题-7] 写出一个Java的Singleton类(即单例类)
1.首先明确单例的概念和特点: a>单例类只能有一个实例 b>单例类必须自己创建一个自己的唯一实例 c>单例类必须为其他所有对象提供这个实例 2.单例具有几种模式,最简单的两种分别是 ...
- Singleton(单例)模式
Singleton(单例)模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点. public class Singleton { private static Singleton ourIns ...
- C++ Singleton (单例) 模式最优实现
参考:http://blog.yangyubo.com/2009/06/04/best-cpp-singleton-pattern/ 索引 静态化并不是单例 (Singleton) 模式 饿汉模式 懒 ...
- java双重检测或枚举类实现线程安全单例(懒汉模式)
双重检测实现 /** * 懒汉模式->双重同步锁单例模式 */ public class SingletonExample5 { private SingletonExample5() { } ...
- javascript的单例/单体模式(Singleton)
首先,单例模式是对象的创建模式之一,此外还包括工厂模式.单例模式的三个特点:1,该类只有一个实例2,该类自行创建该实例(在该类内部创建自身的实例对象)3,向整个系统公开这个实例接口 Java中大概是这 ...
- 单例/单体模式(Singleton)
单例/单体模式(Singleton) 首先,单例模式是对象的创建模式之一,此外还包括工厂模式. 单例模式的三个特点: 1,该类只有一个实例 2,该类自行创建该实例(在该类内部创建自身的实例对象) 3, ...
随机推荐
- linux 虚拟机设置好固定ip 修改了 dns 网络需要设置成桥接模式
linux 虚拟机设置好固定ip 修改了 dns 网络需要设置成桥接模式 可以修复网络连接(浏览器返回 server not found)
- 【VS Error】VS2008在编译时出现:Error 15 Cannot register assembly
现象: 在visual studio 2008在编译类库时提示如下错误: Error 15 Cannot register assembly "D:\01_Work\02_SVN\OCRpl ...
- Python3.x:抢票
Python3.x:抢票 一个妹子叫我帮她买动车票,结果竟然没买到票:好吧,不好意思说买不到票,写个抢票程序来完成吧: 1,Chromediver安装: 因为需要chrome支持页面测试,所以需要安装 ...
- PHP+MySQL数据库编程的步骤
第一步:PHP连接MySQL服务器 第二步:选择当前要操作的数据库 第三步:设置请求或返回的数据的字符集 第四步:执行各种SQL语句. PHP连接MySQL服务器 1.mysql_connect() ...
- idea+maven本地仓库更新问题
在POM文件中将dependecy填好,.m2/repository/文件夹下也有相应的包下载了.但idea External Libraries就是引用不到这个包. 怎么mvn clean inst ...
- [BZOJ4566][HAOI2016]找相同子串
COGS传送门 用SAM重新写了一遍.. 我的方法比较笨,先把两个串连在一起,算出来相同子串个数,同理算出s1和s2的子串个数.作差即可. 至于如何统计子串个数,首先toposort后搞出right集 ...
- 20145310 《Java程序设计》第5周学习总结
20145310 <Java程序设计>第5周学习总结 教材学习内容总结 本周主要进行第八章和第九章的学习. java中所有的错误都会打包为对象,可以try catch代表错误的对象后做一些 ...
- ECU
ECU(Electronic Control Unit)电子控制单元,又称“行车电脑”.“车载电脑”等.从用途上讲则是汽车专用微机控制器,也叫汽车专用单片机.它和普通的单片机一样,由微处理器(CPU) ...
- [CF914D]Bash and a Tough Math Puzzle
给定一个数列$a_1,a_2,...,a_n$,支持两种操作 1 l r x,猜测数列中[l,r]位置上的数的最大公约数$x$,判断这个猜测是否是接近正确的.如果我们可以在数列[l,r]位置中改动至多 ...
- Vue中使用百度地图——设置地图标注
知识点:创建Map实例,为指定的位置设置标注 参考博客:https://www.cnblogs.com/liuswi/p/3994757.html 1.效果图:初始化地图,设置指定经纬度为地图中心点坐 ...