重写操作符=

今天在剑指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;}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容