Sunday, December 7, 2008

C++ Code Example: Singleton Class (Ex:1)

Sphere: Related Content #include <iostream>
using namespace std;
class CSingleton {
public:
   static CSingleton &GetInstance();

   void showMesg()
{
      cout << "Hi This is Sujit Das" << endl;
}

#if 1
protected:
   // need default ctor for GetInstance.
   // ctor is protected, not private in case you want to derive.
   CSingleton() { }
   //CSingleton(const CSingleton& o) { }
   CSingleton& operator=(const CSingleton& o) {cout << "Assignment operator" << endl; }
#endif
#if 0
private:
   CSingleton() { }
   CSingleton(const CSingleton& o) { }
   //CSingleton& operator=(const CSingleton& o) { }
#endif
};

CSingleton& CSingleton::GetInstance() {
      static CSingleton theInstance; // one-and-only instance
      return theInstance;
}



main()
{
     // These lines will not compile:
     CSingleton x = CSingleton::GetInstance(); // error: private copy ctor!
     x.showMesg();
     CSingleton y = CSingleton::GetInstance(); // error: private copy ctor!
     y.showMesg();      // error: private assignment!
     CSingleton z = x;
     z.showMesg();
}

No comments: