在operator=中处理“自我赋值”
在operator=最前面需要进行“证同测试”达到“自我赋值”的检验目的:
Widget& Widget::operator=(const Widget &rhs)
{
if (this == &rhs) return *this;
delete pb;
pb = new Bitmap(*rhs.pb);
return *this;
}
复制对象时勿忘其每一个成分
当编写一个copying函数,请确保:
- 复制所有local成员变量;
- 调用所有base classes内的适当的copying函数;
- 不要令赋值运算符调用复制构造函数,也不要令复制构造函数调用赋值运算符。