在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函數;
- 不要令賦值運算符調用複製構造函數,也不要令複製構造函數調用賦值運算符。