c++深拷贝和浅拷贝的区别?
生活随笔
收集整理的這篇文章主要介紹了
c++深拷贝和浅拷贝的区别?
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
c++深拷貝和淺拷貝的區(qū)別
- 淺拷貝
- 深拷貝
- 總結(jié)
淺拷貝
對一個已知對象進(jìn)行拷貝,編譯系統(tǒng)會自動調(diào)用一種構(gòu)造函數(shù)——拷貝構(gòu)造函數(shù),如果用戶未定義拷貝構(gòu)造函數(shù),則會調(diào)用默認(rèn)拷貝構(gòu)造函數(shù),調(diào)用一次構(gòu)造函數(shù),調(diào)用兩次析構(gòu)函數(shù),兩個對象的指針成員所指內(nèi)存相同,但是程序結(jié)束時該內(nèi)存卻被釋放了兩次,會造成內(nèi)存泄漏問題。
深拷貝
在對含有指針成員的對象進(jìn)行拷貝時,必須要自己定義拷貝構(gòu)造函數(shù),使拷貝后的對象指針成員有自己的內(nèi)存空間,即進(jìn)行深拷貝,這樣就避免了內(nèi)存泄漏發(fā)生,調(diào)用一次構(gòu)造函數(shù),一次自定義拷貝構(gòu)造函數(shù),兩次析構(gòu)函數(shù)。兩個對象的指針成員所指內(nèi)存不同。
總結(jié)
淺拷貝只是對指針的拷貝,拷貝后兩個指針指向同一個內(nèi)存空間,深拷貝不但對指針進(jìn)行拷貝,而且對指針指向的內(nèi)容進(jìn)行拷貝,經(jīng)深拷貝后的指針是指向兩個不同地址的指針。**
總結(jié)
以上是生活随笔為你收集整理的c++深拷贝和浅拷贝的区别?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网银代收业务停止服务是什么意思
- 下一篇: 港股暗盘是什么意思