在c++类中,我想重载赋值运算符,通过深度复制将一个对象赋值给另一个对象
String& String::operater = (const String & st)
{
if (this == &st)
return *this;
delete [] str;
len = st.len;
str = new char[len + 1];
std::strcpy(str, st.str);
return *this;
}
书上说由于目标对象可能引用了以前分配的数据,所以函数应使用delete[]来释放这些数据。这句话是什么意思呀,(有解释说可能是使用下面这条语句:String sailor = String(sports); 其中String sailor 调用了构造函数,构造函数中用new申请了内存)而且书上说的是可能引用了,如果没用引用那delete不会发生错误吗?