示例#1
0
 SP(const SP<T>& sp) : pData(sp.pData), reference(sp.reference)
 {
     // Copy constructor
     // Copy the data and reference pointer
     // and increment the reference count
     reference->AddRef();
 }
示例#2
0
 SP(T* pValue) : pData(pValue), reference(0)
 {
     // Create a new reference 
     reference = new RC();
     // Increment the reference count
     reference->AddRef();
 }
示例#3
0
文件: main.cpp 项目: CCJY/coliru
 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;
 }
示例#4
0
文件: main.cpp 项目: CCJY/coliru
 SP(const SP<T>& sp) : pData(sp.pData), reference(sp.reference)
 {
     reference->AddRef();
 }