Software & Finance

C++ - Singleton Class

If there is a need to create only one instance of a class, then make sure,
1. Default and Copy constructors are declared as private.
2. Assignment operator is declared as private.
3. Have a static function that will return the pointer to the class.

Source Code

#include <iostream>


class MySingletonClass {



    int m_nValue;

    MySingletonClass() { };

    MySingletonClass(const MySingletonClass& other);

    const MySingletonClass& operator = (const MySingletonClass& other);



    static MySingletonClass* m_pMySingletonClass;

    static MySingletonClass* GetInstance()


        if(m_pMySingletonClass == NULL)

            m_pMySingletonClass = new MySingletonClass();

        return m_pMySingletonClass;



    int GetValue() const { return m_nValue; }


    void SetValue(int nVal) { m_nValue = nVal; }



MySingletonClass* MySingletonClass::m_pMySingletonClass = NULL;


int main()


    MySingletonClass *p1 = MySingletonClass::GetInstance();

    MySingletonClass *p2 = MySingletonClass::GetInstance();

    // Both instances will point to the same object


    std::cout << p2->GetValue();