gegege123gege
2016-03-10 01:13C++ 操作符重载的内存释放问题
=操作符重载,给复构造函数进行赋值时的代码如下:
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条回答
为你推荐
- C++ 运算符重载 代码报错问题
- c++
- 2个回答
- 子类与父类输出操作符重载出错
- c语言
- c++
- 1个回答
- C++等号运算符‘=’重载问题,显示乱码。
- 乱码
- c++
- class
- 1个回答
- 关于矩阵类操作符重载的for循环大括号的问题
- matrix
- c++
- 4个回答
- C++操作符【】重载BUG
- c++
- 指针
- 链表
- 1个回答
换一换