程序员面试题精选100题(30)-赋值运算符重载函数[C/C++/C#](2)

时间:2019-09-22 编辑:多美文
&str)
  • {
  • if(this != &str)
  • {
  • CMyString strTemp(str);
  • char* pTemp = strTemp.m_pData;
  • strTemp.m_pData = m_pData;
  • m_pData = pTemp;
  • }
  • return *this;
  • }
  • 在这个函数中,我们定义一个临时实例strTemp,并把strTempm_pData指向当前实例(*this)的m_pData。由于strTemp是个局部变量,但程序员运行到if的外面是也就出了的该变量的域,就会自动调用strTemp的析构函数,就会把strTemp.m_pData所指向的内存释放掉。由于strTemp.m_pData指向的内存就是当前实例之前m_pData的内存。这就相当于自动调用析构函数释放当前实例的内存。如果新增加指针成员变量,我们只需要在析构函数里正确地释放,而不需要对赋值运算符函数做任何修改。

    本文已影响
    相关文章
    热门文章
    好书推荐
    最新文章
    推荐文章
    推荐栏目