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, ...
随机推荐
-
[1]开发准备-使用C#.NET开发基于本地数据缓存的PC客户端
小记:本人是PHPer,对C#.NET的开发只能说看得懂,也写得了功能略简单的PC客户端程序,下面的是本人开发一款名叫“理财速记”的PC客户端软件的全过程记录,期间包括比较繁琐的C#.NET资料查询等 ...
-
C#的初始化器
using System; using System.Collections; using System.Collections.Generic; using System.IO; using Sys ...
-
Hbase快速开始——shell操作
一. 介绍 HBase是一个分布式的.面向列的开源数据库,源于google的一篇论文<bigtable:一个结构化数据的分布式存储系统>.HBase是Google Bigtable的开源实 ...
-
oracle表中某个字段含有字符回车、空格的手动修改方式
select t.*, t.rowid from TB_SD_STANDARD_CHOOSE_ADVISE t where t.id =323900000 update TB_SD_STANDARD_ ...
-
MongoDB命令行操作
本文专门介绍MongoDB的命令行操作.其实,这些操作在MongoDB官网提供的Quick Reference上都有,但是英文的,为了方便,这里将其稍微整理下,方便查阅. 这里用来做测试的是远端(10 ...
-
Android常用控件之ExpandableList的使用
先来看下什么是ExpandableListView 跟列表有点像,这种是可以折叠的列表,下面来看下是如何在代码中实现 一.在布局文件中声明一个ExpandableListView <Linear ...
-
C++中的字符串的输入输出函数、空字符与空格的区别、字符变量赋值和字符串初始化
一.字符串输入输出函数 1. cin.get() 逐个字符输入输出 2. cin 可以将整个字符串一次性输入,但是,cin将空格.Tab和回车键,因此不能用于数组的一次性输入. 注意:ci ...
-
arcgis 10 File GDB转成9.3 File GDB
背景:已有的File GDB数据是在ArcGIS 10下面创建的,在运行9.3的电脑上无法读取,需要转换成低版本. 方法: 1.在ArcGIS Toolbox中找到相关工具(datamanagemen ...
-
CSS网页菜单
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserContro ...
-
mysql 5.6 binlog组提交实现原理(转载)
http://blog.itpub.net/15480802/viewspace-1411356/ Redo组提交 Redo提交流程大致如下 lock log->mutex write redo ...