geral吧 关注:5贴子:215
  • 1回复贴,共1

【操作符重载】赋值重载之对象赋值注意事项

只看楼主收藏回复

1. 注意要把被赋值的对象里面的链表清除干净,不能单单pHead=0
while(pHead=pCurrent){
pHead=pHead->next;
delete pCurrent;
}
2. 有了1的代码之后,要注意一个特殊情况:
a=a;
给自己赋值时,会造成把内部的链表全部清除,从而造成了空表的状态。
解决方法是进行比较:
A& A::operator=(const A &a){
if(this=&a) return *this;//返回this指针地址。
……
}


IP属地:广东1楼2014-02-19 22:53回复
    卧槽,写错,是:
    if(this==&a) 不是 if(this=&a)


    IP属地:广东2楼2014-02-19 23:42
    回复