【问题标题】:singleton for initializing instance用于初始化实例的单例
【发布时间】:2013-06-01 09:50:17
【问题描述】:

我正在阅读,我在下面的示例中有疑问。

单身

Class MazeFactory{
public:
   static MazeFactory* Instance();
protected:
   MazeFactory();
private:
   static MazeFactory* _instance;
};

MazeFactory* MazeFactory::_instance = 0;
MazeFactory* MazeFactory::Instance(){
   if(_instance == 0){
      _instance = new MazeFactory;
   }
   return _instance;
}

对于''MazeFactory* MazeFactory::_instance = 0;',我应该把它放在哪里?在这个类的定义?还有其他选择来初始化它吗?看的时候只知道设计是这样的,但不明白为什么要这样设计。

【问题讨论】:

    标签: c++ singleton instance


    【解决方案1】:

    根据单例的定义,您只需要在第一次访问它时创建实例。因此,要确保只有在必须将其初始化为 NULL 时才进入 if 条件。通常初始化是在类定义中完成的。

    【讨论】:

      【解决方案2】:

      static private 可以在类外初始化,但只能初始化一次。许多关于单例的帖子也会向您展示这一点。是的,这不会违反访问规则。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多