为了账号安全,请及时绑定邮箱和手机立即绑定

C ++ Singleton设计模式

C ++ Singleton设计模式

慕妹3146593 2019-05-23 10:24:02
C ++ Singleton设计模式最近我碰到了C ++的Singleton设计模式的实现/实现。看起来像这样(我从现实生活中采用了它):// a lot of methods are omitted hereclass Singleton{    public:        static Singleton* getInstance( );        ~Singleton( );    private:        Singleton( );        static Singleton* instance;};从这个声明我可以推断出实例字段是在堆上启动的。这意味着存在内存分配。对我来说完全不清楚的是,什么时候内存将被解除分配?还是有漏洞和内存泄漏?好像在实施中存在问题。我的主要问题是,如何以正确的方式实施它?
查看完整描述

3 回答

?
Cats萌萌

TA贡献1805条经验 获得超9个赞

作为一个单身人士,你通常不希望它被破坏。

当程序终止时,它将被拆除并解除分配,这是单例的正常,期望的行为。如果你想能够明确地清理它,那么向类中添加一个静态方法是非常容易的,它允许你将它恢复到干净状态,并在下次使用它时重新分配它,但这超出了范围。 “经典”单身人士。


查看完整回答
反对 回复 2019-05-23
?
浮云间

TA贡献1829条经验 获得超4个赞

你可以避免内存分配。存在许多变体,在多线程环境的情况下都存在问题。

我更喜欢这种实现(实际上,我没有正确地说我更喜欢,因为我尽可能地避免单身人士):

class Singleton{private:
   Singleton();public:
   static Singleton& instance()
   {
      static Singleton INSTANCE;
      return INSTANCE;
   }};

它没有动态内存分配。


查看完整回答
反对 回复 2019-05-23
  • 3 回答
  • 0 关注
  • 528 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信