QT的单例模式

类型1:

classA.h

#include <QObject>

class classA : public QObject

{

    Q_OBJECT

public:

    static classA* instance(){static classA m_classA; return &m_classA;}

    ~classA();

private:

    explicit classA();//explicit classA(QObject *parent = 0);

}


类型2:

classA.h

#include <QObject>

class classA : public QObject

{

    Q_OBJECT

public:

    static classA* instance();

    ~classA();

private:

    explicit classA();//explicit classA(QObject *parent = 0);

private:

    static classA *m_classA;

}

classA.cpp

classA* classA::m_classA = new classA;

classA classA* instance()

{

        return m_classA;

};

类型3:

classA.h

#include <QObject>

class classA : public QObject

{

    Q_OBJECT

public:

    static classA* instance();

    ~classA();

private:

    explicit classA();//explicit classA(QObject *parent = 0);

private:

    static classA *m_classA;

}

classA.cpp

classA* classA::m_classA = NULL;

classA classA* instance()

{

        if(NULL == m_classA)

                m_classA = new classA; 

        return m_classA;

};

类型4:

classA.h

#include <QObject>

class classA : public QObject

{

    Q_OBJECT

public:

    static classA* instance();

    ~classA();

private:

    explicit classA();//explicit classA(QObject *parent = 0);

}

classA.cpp

classA classA* instance()

{

        static classA m_classA; 

        return &m_classA;

};