1. 程式人生 > >讀書筆記《Effective c++》 條款12 複製物件時勿忘其每一個成分

讀書筆記《Effective c++》 條款12 複製物件時勿忘其每一個成分

名詞:

  copying函式 = 拷貝建構函式 + 賦值操作符

重點是:當你自己要編寫一個copying函式時,請確保:

  a.複製所有local成員變數

  b.呼叫所有base class內的適當的copying函式。(拷貝建構函式是在初始化列表呼叫base class的函式,賦值操作符是在函式體呼叫Base::operator=(rhs))

另外,這兩個copying函式往往有近似相同的實現本體,如果你要消除重複的程式碼,請建立一個新函式給兩者呼叫,而不是在兩者各自的實現中呼叫對方,這無法理解(有些操作可以做,但絕不是有益的嘗試)。

總結:

a.copying函式應該確保賦值“物件內的所有成員變數”及“所有base class成分”。

b.不要嘗試以某個copying函式實現另一個copying函式。應該將共同機能放進第三個函式中。並有兩個copy函式共同呼叫。