這幾個(gè)概念比較容易混淆,總結(jié)一下。
同默認(rèn)構(gòu)造函數(shù)一樣,當(dāng)我們沒有定義復(fù)制構(gòu)造函數(shù)時(shí),編譯器會(huì)合成一個(gè)默認(rèn)的復(fù)制構(gòu)造函數(shù)。合成的復(fù)制構(gòu)造函數(shù)只是滿足編譯器的需求,把新對象的每個(gè)成員變量初始化為原對象的副本,通常是大家所說的淺拷貝。一般來說合成的復(fù)制構(gòu)造函數(shù)能滿足我們的需求,但是包含有指針的類一般情況下需要定義自己的復(fù)制構(gòu)造函數(shù)。
關(guān)于深拷貝淺拷貝可參考:Memberwise copy(深拷貝)與Bitwise copy(淺拷貝)的區(qū)別
至于有指針的類為什么需要復(fù)制構(gòu)造函數(shù)可參考:C++中的智能指針
有時(shí)候我們禁止對象的復(fù)制,這時(shí)只需要把復(fù)制構(gòu)造函數(shù)聲明為PRivate。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注