Advertisement
llsumitll

Untitled

Dec 1st, 2023
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.47 KB | Source Code | 0 0
  1. #include <iostream>
  2. #include <thread>
  3. #include <mutex>
  4. using namespace std;
  5.  
  6. mutex m;
  7.  
  8. class SingletonClass
  9. {
  10.     private:
  11.         SingletonClass() { }
  12.         SingletonClass(const SingletonClass& ) = delete ;
  13.         SingletonClass(const SingletonClass&& )= delete ;
  14.         //SingletonClass& operator= (const SingletonClass&) = delete ;
  15.         //SingletonClass& operator= (const SingletonClass&&) = delete ;
  16.  
  17.     public:
  18.         ~SingletonClass() ;
  19.         //static SingletonClass * singletonObject;
  20.         static unique_ptr<SingletonClass> singletonObject ;
  21.         static SingletonClass* getInstance();
  22.         void testObj()
  23.         {
  24.             cout << "Hello I am singleton :  " << this << endl;
  25.         }
  26.         friend std::unique_ptr<SingletonClass> std::make_unique<SingletonClass>();
  27.  
  28.        
  29. };
  30.  
  31. unique_ptr<SingletonClass>SingletonClass::singletonObject = nullptr;
  32.  
  33.  
  34. SingletonClass * SingletonClass::getInstance()
  35. {
  36.     lock_guard<mutex> lock(m);
  37.     if(!singletonObject)
  38.     {
  39.         singletonObject = make_unique<SingletonClass>();
  40.     }
  41.     return singletonObject.get();
  42. }
  43.  
  44. int  main()
  45. {
  46.     SingletonClass * s = SingletonClass::getInstance();
  47.     s -> testObj();
  48.  
  49.     SingletonClass * s1 = SingletonClass::getInstance();
  50.     s1 -> testObj();
  51.  
  52.     SingletonClass * s2 = SingletonClass::getInstance();
  53.     s2 -> testObj();
  54.  
  55.     SingletonClass * s3 = SingletonClass::getInstance();
  56.     s3 -> testObj();
  57.     return 0;
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement