Exemple #1
0
 SP<T>&  reset ()
 {
     if(reference->Release() == 0)
     {
         delete pData;
         delete reference;
     }
 }
Exemple #2
0
 ~SP()
 {
     // if reference become zero delete the data
     if(reference->Release() == 0)
     {
         delete pData;
         delete reference;
     }
 }
 ~SP()
 {
     // Destructor
     // Decrement the reference count
     // if reference become zero delete the data
     if(reference->Release() == 0)
     {
         delete pData;
         delete reference;
     }
 }
Exemple #4
0
 SP<T>& operator = (const SP<T>& sp)
 {
     // Assignment operator
     if (this != &sp) // Avoid self assignment
     {
         // Decrement the old reference count
         // if reference become zero delete the old data
         if(reference->Release() == 0)
         {
             delete pData;
             delete reference;
         }   
         // Copy the data and reference pointer
         // and increment the reference count
         pData = sp.pData;
         reference = sp.reference;
         reference->AddRef();
     }
     return *this;
 }