Implement an assignment operator overloading method.
Make sure that:
- The new data can be copied correctly
- The old data can be deleted / free correctly.
- We can assign like
A = B = C
Example
If we assign like
A = B
, the data in A should be deleted, and A can have a copy of data from B. If we assign like A = B = C
, both A and B should have a copy of data from C.
Challenge
Consider about the safety issue if you can and make sure you released the old data.
class Solution { public: char *m_pData; Solution() { this->m_pData = NULL; } Solution(char *pData) { this->m_pData = pData; } // Implement an assignment operator Solution operator=(const Solution &object) { // write your code here if(this == &object) return *this; delete this->m_pData; this->m_pData = NULL; char *p = object.m_pData; if(!p) return *this; int len = 0; while(p && *p++) len++; this->m_pData = new char[len+1]; this->m_pData[len] = 0; while(--len>=0) this->m_pData[len] = object.m_pData[len]; return *this; } };