gegege123gege
gegege123gege
2016-03-10 01:13

C++ 操作符重载的内存释放问题

  • c++
  • 复制构造函数
  • 运算符重载

=操作符重载,给复构造函数进行赋值时的代码如下:

MyString & MyString::operator =(const MyString &str)
{
if(this == &str)
return *this;

    delete []m_pData;    //**???????????????????????????? **
    m_pData = NULL;

    m_pData = new char(strlen(str.m_pData) + 1);
    strcpy (m_pData, str.m_pData);

    return *this;

}

class MyString
{
public:
....
private:
char *m_pData;
}

在函数中为什么还要是对原有的内存进行释放,即delete []m_pData,直接赋值 m_pData = str.m_pData, 这样不行吗?

请大神指点。

  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

4条回答