您的位置:首页 > 其它

实现=操作符时判断自己给自己赋值

2007-07-16 15:48 288 查看
// 忽略了给自己赋值的情况
// 的赋值运算符
string& string::operator=(const string& rhs)
{
delete [] data; // delete old memory

// 分配新内存,将rhs的值拷贝给它
data = new char[strlen(rhs.data) + 1];
strcpy(data, rhs.data);

return *this; // see item 15

}

c& c::operator=(const c& rhs)
{
// 检查对自己赋值的情况
if (this == &rhs) return *this;

...

}
在没有判断自己给自己赋值的时候,释放以前的内存时,重新分配,再将原来的数据COPY过来,但是此是原来的数据被释放掉了,这样就丢失了数据,新分配的内存里的数据是不确定的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐