用于初始化实例的单例
singleton for initializing instance
我正在阅读,我在下面的例子中有问题。
SINGLEON
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; ",我应该把它放在哪里?在这个类的定义中?是否有其他选择来初始化它?当我看到它的时候,我只知道它的设计是这样的,但是我不明白为什么要这样设计。
根据单例的定义,您只需要在第一次访问它时创建实例。因此,为了确保您只进入if条件一次,您必须将其初始化为NULL。通常初始化在类定义中完成。
static private可以在类外初始化,但只能初始化一次。许多关于单身的帖子也会告诉你这一点。是的,这并没有违反访问规则。
相关文章:
- 为什么在单例中,检查类==空?
- C++ 实现模板单例类时出现链接错误
- C++中的单例实现在调用 getInstance 函数时不会产生相同的类实例
- 如何析构单例实例,或者为什么以下代码适用于析构函数?
- C++在单例类中创建类实例时遇到困难
- 使用新线程在类似于 Scott Meyer 的单例习惯用法的实现中实例化单例是否安全?
- XCode5.1 C 静态单例,但创建了多个实例
- c++单例类实例访问整个应用程序
- 如何检查是否存在单例实例,如果没有,则不创建新实例?
- 指针成员的 C++/CLI 包装器 - C++ 单例实例
- 单例实例化了两次
- 当周围有线程时,创建类的许多实例会失败吗?- 单例模式
- 为什么C++单例实例化需要do_nothing方法
- 在什么情况下,单例设计模式可能会生成同一单例类的多个实例
- Linux上跨共享库的多个单例实例
- 用于初始化实例的单例
- 由于静态库导致的单例多实例问题
- 无法从其他类获取单例类的实例
- 单例的重复实例化
- 避免插件中的单例在所有实例之间共享