用c++设计一个类,该类仅仅被允许实例化一次! 这题目是啥意思?求解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用c++设计一个类,该类仅仅被允许实例化一次! 这题目是啥意思?求解相关的知识,希望对你有一定的参考价值。
只允许被实例化一次的叫做单例模式.
是程序设计模式里面的.
单例模式有许多种实现方法,在C++中,甚至可以直接用一个全局变量做到这一点,但这样的代码显的很不优雅。 使用全局对象能够保证方便地访问实例,但是不能保证只声明一个对象——也就是说除了一个全局实例外,仍然能创建相同类的本地实例。
《设计模式》一书中给出了一种很不错的实现,定义一个单例类,使用类的私有静态指针变量指向类的唯一实例,并用一个公有的静态方法获取该实例。
单例模式通过类本身来管理其唯一实例,这种特性提供了解决问题的方法。唯一的实例是类的一个普通对象,但设计这个类时,让它只能创建一个实例并提供对此实例的全局访问。唯一实例类Singleton在静态成员函数中隐藏创建实例的操作。习惯上把这个成员函数叫做Instance(),它的返回值是唯一实例的指针。
定义如下:
class CSingletonprivate:
CSingleton() //构造函数是私有的
static CSingleton *m_pInstance;
public:
static CSingleton * GetInstance()
if(m_pInstance == NULL) //判断是否第一次调用
m_pInstance = new CSingleton();
return m_pInstance;
;
用户访问唯一实例的方法只有GetInstance()成员函数。如果不通过这个函数,任何创建实例的尝试都将失败,因为类的构造函数是私有的。GetInstance()使用懒惰初始化,也就是说它的返回值是当这个函数首次被访问时被创建的。
追问有点听不懂……
追答单例模式是设计模式里面的一种.
比方说,
在游戏编程里面,你想存储某个玩家的等级,经验,金钱的数据.
就用单例模式, 因为单例模式只会实例化一次,所以保存在里面的值不会丢失,
而可以从任何地方调用获取该玩家的数据.懂了吗
嗯嗯,谢谢
参考技术A 没看明白 主要说明下腰算什么?追问这就是整个题目……
单例模式
单例指仅仅会被实例化一次的类,这样这个类是整个系统中只会存在唯一的实例。单例通常被用来代表那些本质上唯一的系统组件。
类的实例化是通过new来完成的,每次调用new都可以保证创建了一个新的实例。要保证只实例化一次,那么就要保证只能调用一次new。
要实现这一点,需要将构造器私有化。这样调用者就不能使用new来实例化了,但是还是需要一次实例化的,这个该怎么办?又如何得到这个唯一的实例?
实现单例有三种方法
- 导出共有静态成员
public class Hello{ public static final Hello INSTANCE = new Hello(); }
- 使用静态工厂方法
public class Hello{ private static final Hello INSTANCE = new Hello(); public static getInstance(){ return INSTANCE; } }
- 使用枚举
public enum Hello{ INSTANCE; }
以上是关于用c++设计一个类,该类仅仅被允许实例化一次! 这题目是啥意思?求解的主要内容,如果未能解决你的问题,请参考以下文章