Effective C++ 第十二條 Copy all parts of an object.
復(fù)制對(duì)象時(shí)勿忘其中每一個(gè)成分
????????我們先寫一個(gè)類以及它的拷貝構(gòu)造和賦值操作

這個(gè)類沒有任何問題,也不會(huì)報(bào)錯(cuò),接著看

????但是一旦涉及繼承,就會(huì)出問題了,在 Derived 類中拷貝構(gòu)造明明和 Base 一樣,但是卻會(huì)出錯(cuò),因?yàn)?Derived 的拷貝構(gòu)造只初始化了 Derived 中的成員 b ,沒有顧及到 Base 中的成員 a。但是這里 Derived 是 public 繼承,無法調(diào)用 Base 中的 private 成員,所以應(yīng)當(dāng)調(diào)用 Base 的 拷貝構(gòu)造或復(fù)制來實(shí)現(xiàn),解決如下

問題到這里就解決了,但是有一個(gè)點(diǎn)可以優(yōu)化
將 assignment 和 copy constructor 的共同部分打包成一個(gè)函數(shù),盡量代碼復(fù)用

這里通過提高了代碼復(fù)用性。
謹(jǐn)記:不要通過 assignment 調(diào)用 copy constructor ,也不要在 copy constructor 調(diào)用 assignment。
標(biāo)簽: