1. 程式人生 > >《Effective C++》學習筆記條款12 複製物件時勿忘其每一個成員

《Effective C++》學習筆記條款12 複製物件時勿忘其每一個成員

條款12:複製物件時勿忘其每一個成員 還記得條款5中提到編譯器在必要時會為我們提供拷貝建構函式和拷貝賦值函式,它們也許工作的不錯,但有時

我們需要自己編寫自己的拷貝建構函式和拷貝賦值函式。如果這樣,我們應確保對每一個成員進行拷貝(復

制)。

      如果你在類中新增一個成員變數,你必須同時修改相應的copying函式(所有的建構函式,拷貝建構函式以及拷貝

賦值操作符)

      在派生類的建構函式,拷貝建構函式和拷貝賦值操作符中應當顯示呼叫基類相對應的函式,否則編譯器可能又

作聰明瞭

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

1)複製所有local成員變數;

2)呼叫所有基類內的適當copying函式。

但是,我們不該令拷貝賦值操作符呼叫拷貝建構函式,也不該令拷貝建構函式呼叫拷貝賦值操作符。想想,一個

拷貝(建立物件),一個是賦值(物件已經存在)

    請記住:

  • Copying函式應該確保複製“物件內的所有成員變數”及“所有基類成員”;
  • 不要嘗試以某個copying函式實現另一個copying函式。應該將共同機能放進第三個函式中,並由兩個copying函式共同呼叫。