《Effective C++》學習筆記

在operator=中處理“自我賦值”

在operator=最前面需要進行“證同測試”達到“自我賦值”的檢驗目的:

Widget& Widget::operator=(const Widget &rhs)
{
    if (this == &rhs) return *this;

    delete pb;
    pb = new Bitmap(*rhs.pb);
    return *this;
}

複製對象時勿忘其每一個成分

當編寫一個copying函數,請確保:

  1. 複製所有local成員變量;
  2. 調用所有base classes內的適當的copying函數;
  3. 不要令賦值運算符調用複製構造函數,也不要令複製構造函數調用賦值運算符。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章