class Singleton { public: static Singleton* instance(); ... private: static Singleton* volatile pInstance; // volatile added int x; Singleton() : x(5) {} }; // from the implementation file Singleton* Singleton::pInstance = 0; Singleton* Singleton::instance() { if (pInstance == 0) { Lock lock; if (pInstance == 0) { Singleton*volatile temp = new Singleton; // volatile added pInstance = temp; } } return pInstance; }
Example 7: Declaring pInstance.