相关疑难解决方法(0)

C++ Singleton设计模式

最近我碰到了C++的Singleton设计模式的实现/实现.看起来像这样(我从现实生活中采用了它):

// a lot of methods are omitted here
class Singleton
{
   public:
       static Singleton* getInstance( );
       ~Singleton( );
   private:
       Singleton( );
       static Singleton* instance;
};
Run Code Online (Sandbox Code Playgroud)

从这个声明我可以推断出实例字段是在堆上启动的.这意味着存在内存分配.对我来说完全不清楚的是,什么时候内存将被解除分配?还是有漏洞和内存泄漏?好像在实施中存在问题.

我的主要问题是,如何以正确的方式实施它?

c++ singleton design-patterns

692
推荐指数
11
解决办法
65万
查看次数

访问共享库中定义的单例

让我们假设我有以下架构:

  • Dodo 单身课程 libdodo
  • 主要方案有联系libdodolibponny; 主程序称为Dodo::instance()
  • Ponny来自libponny创建的类.它有Dodo单身标题

mainwindow.cpp

    #include "shared/dodo/dodo.h"
    // ...
    Dodo::instance()->setNumber(91);
Run Code Online (Sandbox Code Playgroud)

然后,在此调用之后,Ponny创建类(ponny.cpp)

ponny.cpp

    #include "shared/dodo/dodo.h"
    // ...
    bool is = (Dodo::instance()->number() == 91);
    // Will `is` be true?
Run Code Online (Sandbox Code Playgroud)

那么,我可以这样做吗?

c++ singleton shared-libraries

5
推荐指数
1
解决办法
4003
查看次数