C++中如何实现单件模式

前几天C++老师提到在给我们讲解知识的时候用到了单件模式的概念!

今天写出来和大家分享分享!

我的技术还很差,可能文章中会有错误或者不对的地方,希望大家给我指出,帮我改正!

言归正传!

题目是这样的:

创建一个类,是这个类在其作用域内只能有一个实例!

刚开始老师没讲的时候我也实现了这个功能,

我的方法是在类中声明一个静态数据成员(整型),

在类的构造函数里做点手脚!

我是在构造函数里检测一下静态数据成员的值是不是0(初始是0),如果不是0,就直接exit;

第一次建立对象,它的值是0,建立之后就对静态数据成员自加,

这样子就变成1了,下次再建立新对象的时候因为静态数据成员不是0,所以对象不会被创建!

但是我的这个方法缺点很明显,因为实在运行的时候进行判断的,如果用户建立的两个对象那么程序就直接退出了!显然大家不想出现这样的情况!

 

后来老师给我们讲解了他的方法,我听得似懂非懂,听到他提到了一嘴单件模式,所以我在课后就花了些时间查查资料,总算明白了大概了!

所谓单件模式就是在设计模式中的一个概念,实现上面题目的要求!

它使用的方法:我用一个例子来说明:

在这个类中我们把构造函数放在了private:中,这样子我们在类外就无法直接来利用构造函数建立对象了,我们用在public:中定义了一个个静态函数,注意这里面函数的返回值可是对象的引用,这一点很重要!而且一定要是静态函数(因为我们无法建立对象,所以只能通过类名::+函数()的形式来调用),

如此一来我们只需在main函数里声明一个A类的引用来接受这个f()函数的返回值,比如A& b=A::f();这样子我们就为静态对象a起了一个叫b的别名,一切对b的操作就是对a的操作,以后无论你再声明多少个A类的引用去接收A::f()的返回值,其得到的都是当前状态下的a,因为我们知道静态变量只有在第一次定义初始化的时候,才会分配内存,以后再调f()函数,static A a(“小月”);这条语句都不会被执行,而直接返回当前状态下的a!

我说了这么多,也不知道大家明不明白点,有兴趣的朋友可以查查资料,研究一下,也欢迎大家给我找毛病!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值