0

シングルトンのデザインパターンについて学んでいます。次のコード例があります。

//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;

この行は何をどのように行うのですか? 私はこのようなものを見たことがありません。

4

2 に答える 2

0

それはと同じです

Singleton* Singleton::instance_ = NULL;

最初にインスタンスをnullに設定しているだけなので、初めてシングルトンを取得すると、シングルトンオブジェクトが新しくなります。

それ以降は、Singleton を取得しようとするたびに、最初にインスタンス化されたオブジェクトが提供されます。

于 2013-05-10T21:09:58.447 に答える
0
Singleton* Singleton::instance_ = 0; 

ただの意味

Singleton* Singleton::instance_ = NULL; 

静的変数なので、.h ファイルで宣言し、.cpp ファイルで定義する必要があります。

于 2013-05-10T21:10:48.153 に答える