Singleton in C++

Singleton in C++

本文关键字:C++ in Singleton      更新时间:2023-10-16

我正在学习Singleton设计模式。我有以下代码示例:

//singleton.hpp
#ifndef SINGLETON_HPP
#define SINGLETON_HPP
class Singleton {
public:
    static Singleton& Instance();
private:
    Singleton();
    static Singleton* instance_;
};
#endif

和:

//singleton.cpp
#include "singleton.hpp"
Singleton* Singleton::instance_ = 0;
Singleton& Singleton::Instance() {
    if (instance_ == 0) {
        instance_ = new Singleton();
    }
    return *instance_;
}
Singleton::Singleton() {
}

我不明白的是:

Singleton* Singleton::instance_ = 0;

这条线是做什么的,怎么做的?我从来没有见过这样的事。

Singleton* Singleton::instance_ = 0; 

只是指

Singleton* Singleton::instance_ = NULL; 

因为它是静态变量,所以需要在.h文件中声明它,并在.cpp文件

中定义它

与相同

Singleton* Singleton::instance_ = NULL;

它只是在开始时将实例设置为null,这样当您第一次获取Singleton时,它将新建Singleton对象。

从那时起,每当你试图获得Singleton时,它都会给你第一个实例化的对象。