=操作符重载,给复构造函数进行赋值时的代码如下:
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, 这样不行吗?
请大神指点。