美文网首页
重写操作符=

重写操作符=

作者: Wlopsg | 来源:发表于2018-11-27 23:11 被阅读0次

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

    相关文章

      网友评论

          本文标题:重写操作符=

          本文链接:https://www.haomeiwen.com/subject/cqkoqqtx.html