c++拷貝構(gòu)造函數(shù)--深拷貝--淺拷貝

拷貝構(gòu)造函數(shù)是一種特殊的構(gòu)造函數(shù),

唯一的參數(shù)是本類(lèi)型的一個(gè)引用變量。

構(gòu)造函數(shù)名(const? 構(gòu)造函數(shù)名 &? c)

{

? ? ? age? = c. age;

}

當(dāng)用一個(gè)已經(jīng)初始化過(guò)了的自定義類(lèi)型對(duì)象去初始化另外一個(gè)新構(gòu)造的對(duì)象的

時(shí)候,拷貝構(gòu)造函數(shù)就會(huì)被自動(dòng)調(diào)用。

1.一個(gè)對(duì)象以值傳遞的方式傳入函數(shù)體

2.一個(gè)對(duì)象需要通過(guò)另外一個(gè)對(duì)象進(jìn)行初始化

3.一個(gè)對(duì)象以值傳遞的方式從函數(shù)返回

如果在類(lèi)中沒(méi)有顯示的聲明一個(gè)拷貝構(gòu)造函數(shù),那么編譯器會(huì)自動(dòng)生成

一個(gè)默認(rèn)的拷貝構(gòu)造函數(shù),即位拷貝,也叫淺拷貝。

自定義拷貝構(gòu)造函數(shù)是一種良好的編程風(fēng)格,可以阻止編譯器形成默認(rèn)

的拷貝構(gòu)造函數(shù)。

=====深拷貝與淺拷貝=====

如果類(lèi)內(nèi)成員變量需要?jiǎng)討B(tài)開(kāi)辟堆內(nèi)存,此時(shí)如果實(shí)行淺拷貝,就是把

對(duì)象里的值完全復(fù)制給另一個(gè)對(duì)象,那么新對(duì)象的堆內(nèi)存變量也同時(shí)

指向舊對(duì)象的堆成員變量,即兩個(gè)指針指向同一塊內(nèi)存區(qū)域。當(dāng)釋放其中一個(gè)

指針的內(nèi)存時(shí)候,另一個(gè)指針就成為了野指針。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. C++基礎(chǔ) 大多數(shù)編程語(yǔ)言通過(guò)兩種方式來(lái)進(jìn)一步補(bǔ)充其基本特征1)賦予程序員自定義數(shù)據(jù)類(lèi)型的權(quán)利,從而實(shí)現(xiàn)對(duì)語(yǔ)...
    王偵閱讀 817評(píng)論 0 3
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類(lèi)型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,675評(píng)論 1 32
  • 1.ios高性能編程 (1).內(nèi)層 最小的內(nèi)層平均值和峰值(2).耗電量 高效的算法和數(shù)據(jù)結(jié)構(gòu)(3).初始化時(shí)...
    歐辰_OSR閱讀 30,264評(píng)論 8 265
  • 收拾完房子、洗完衣服、躺在沙發(fā)上,不開(kāi)心。只要干這些無(wú)聊的家務(wù),我就尤其的不開(kāi)心。為什么我要每天干這些,我...
    潔兒潔兒潔兒閱讀 222評(píng)論 0 0
  • 近日公司學(xué)習(xí)中有講到團(tuán)隊(duì),望字生意,團(tuán)隊(duì)的簡(jiǎn)化字寫(xiě)做“團(tuán)隊(duì)”,有解為團(tuán)字是將有才幹的人聚集在一起,隊(duì)字是人字邊加一...
    SeanQD閱讀 249評(píng)論 0 0

友情鏈接更多精彩內(nèi)容