C++単例Singleton


参考:
http://topic.csdn.net/u/20080218/08/291c52f9-5ed0-4f7c-abeb-69f691c2e7f4.html
引用タイプ。マルチスレッド初期化問題を解決して、複数のnewを防ぐことができるようですが、プログラム起動と起動するので、プログラム起動が遅くなる可能性があります。

class Singleton   
{   
private:   
    static Singleton instance;   
    Singleton(void)    {       }   
        
public:                       
    static Singleton& GetInstance()   
    {
        return instance;
    }
};

Singleton Singleton::instance;
// static               
//      cpp   
//     .h   ,       
針類、受動型。
これは使う時だけnewです。

class Singleton   
{   
private:   
    static Singleton *instance;   
    Singleton(void)    {       }   
        
public:                       
    static Singleton *GetInstance()   
    {
        if (NULL == instance)
            instance = new Singleton();
        return instance;
    }
    void cleanup()  //             
    {
        if (NULL == instance) return;
        delete instance;
        instance = NULL;
    }
};

Singleton *Singleton::instance = NULL;