重写操作符=

今天在剑指Offer里面看到的面试题,如何重写操作符=

我一开始的思路是直接把这个类赋值过去不就行了吗,才发现自己想的太天真了....

首先应该考虑特殊情况,如果赋值的是null怎么办?怎么实现连续赋值?赋值后是否释放了实例的内存?....

不得不说自己考虑的太浅了,以后解决问题应该先考虑特殊情况和边界条件

正确思路(考虑到内存不足的情况):

CMyString& CMyString::operator(const CMyString &str){

           if(this!=&str){  

            CMyString strTmep(str);

             char* pTmep=strTemp.m_pData;

            strTemp.m_pData=m_Data;

            m_Data=pTemp;

      }

  return *this;

}

未考虑内存不足的情况()

CMyString&CMyString::operator=(constCMyString&str)

{if(this==&str)

{return*this;}

delete[]m_pData;

m_pData=nullptr;

m_pData=newchar[strlen(str.m_pData)+1];

strcpy(m_pData,str.m_pData);

return*this;}

你可能感兴趣的:(重写操作符=)