单例* Singleton :: obj = 0;该行在Singleton模式实施中起什么作用?

时间:2019-04-02 08:05:30

标签: c++ oop design-patterns singleton

此代码可以很好地用作Singleton模式的实现。

我想了解Singleton *Singleton::obj = 0;

这是做什么的,为什么那么重要?
请解释。

#include <stdio.h>

class Singleton
{
    private:
        static Singleton *obj;
        Singleton() 
        {
            obj = NULL;
        }

        unsigned int zero = 0;

    public:
        static Singleton * getObject()
        {
            if( obj == NULL )
                obj = new Singleton();
            else
                printf( "\nMemory has already been allocated!\n" );

            return obj;
        }

        void addToZero()
        {
            zero++;
            printf( "\nzero has now become: %d\n", zero );
        }
};

Singleton *Singleton::obj = 0;

int main()
{
    Singleton *p = Singleton::getObject();
    p->addToZero();

    Singleton *p1 = Singleton::getObject();
    p1->addToZero();
}

0 个答案:

没有答案