《堆與復(fù)制構(gòu)造函數(shù)》PPT課件

《堆與復(fù)制構(gòu)造函數(shù)》PPT課件

ID:36839162

大小:233.75 KB

頁(yè)數(shù):54頁(yè)

時(shí)間:2019-05-10

《堆與復(fù)制構(gòu)造函數(shù)》PPT課件_第1頁(yè)
《堆與復(fù)制構(gòu)造函數(shù)》PPT課件_第2頁(yè)
《堆與復(fù)制構(gòu)造函數(shù)》PPT課件_第3頁(yè)
《堆與復(fù)制構(gòu)造函數(shù)》PPT課件_第4頁(yè)
《堆與復(fù)制構(gòu)造函數(shù)》PPT課件_第5頁(yè)
資源描述:

《《堆與復(fù)制構(gòu)造函數(shù)》PPT課件》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。

1、《C++面向?qū)ο蟪绦蛟O(shè)計(jì)》教學(xué)內(nèi)容第1章C++概述第2章類(lèi)和對(duì)象第3章面向?qū)ο蟪绦蛟O(shè)計(jì)概述第4章進(jìn)一步學(xué)習(xí)類(lèi)和對(duì)象第5章堆與復(fù)制構(gòu)造函數(shù)第6章繼承性:派生類(lèi)第7章運(yùn)算符重載第8章虛函數(shù)和多態(tài)性第9章模板第10章類(lèi)庫(kù)和C++的標(biāo)準(zhǔn)模板庫(kù)STL第11章輸入輸出流第12章異常處理第5章堆與復(fù)制構(gòu)造函數(shù)5.1堆5.2需要new和delete的原因5.3默認(rèn)的復(fù)制構(gòu)造函數(shù)5.4自定義復(fù)制構(gòu)造函數(shù)5.1堆Heap堆是按動(dòng)態(tài)方式分配的內(nèi)存區(qū)域。在程序中需要空間存放數(shù)據(jù)時(shí),就申請(qǐng)動(dòng)態(tài)內(nèi)存單元,使用完畢后釋放動(dòng)態(tài)內(nèi)

2、存單元。這種動(dòng)態(tài)內(nèi)存分配方式能夠顯著地提高內(nèi)存的利用率。C++程序的內(nèi)存布局Stack棧Heap堆Globaldata全局?jǐn)?shù)據(jù)區(qū)程序代碼區(qū)programcode代碼區(qū)存放程序的代碼(可執(zhí)行指令);全局?jǐn)?shù)據(jù)區(qū)存放全局變量、靜態(tài)變量、常量。固定存儲(chǔ)區(qū)域棧是存放程序中的所有動(dòng)態(tài)局部變量、函數(shù)參數(shù)、函數(shù)返回值等信息的一塊內(nèi)存區(qū)域。在固定存儲(chǔ)區(qū)域與堆棧之間的自由區(qū)域稱(chēng)為堆棧Stack棧的內(nèi)存管理嚴(yán)格遵循后進(jìn)先出(LIFO:Lastin,FirstOut)的順序,即釋放棧中對(duì)象所占內(nèi)存時(shí)的順序剛好與給這些對(duì)象

3、分配棧中內(nèi)存時(shí)的順序相反,這一點(diǎn)正是實(shí)現(xiàn)函數(shù)調(diào)用所需要的。從棧中分配內(nèi)存效率特別高,對(duì)棧的充分利用是C/C++編譯程序能產(chǎn)生優(yōu)質(zhì)高效代碼的原因之一。動(dòng)態(tài)內(nèi)存分配堆的內(nèi)存是以動(dòng)態(tài)分配方式管理的。所謂動(dòng)態(tài)分配的內(nèi)存是在程序運(yùn)行期間獲得的。動(dòng)態(tài)存儲(chǔ)分配方式允許我們的程序可以在執(zhí)行期間根據(jù)實(shí)際的需要存放的數(shù)據(jù)量來(lái)申請(qǐng)合適數(shù)量的內(nèi)存單元。這種動(dòng)態(tài)分配方式不但能夠提高內(nèi)存的利用率,而且對(duì)于鏈表和二叉樹(shù)等動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu)特別有用。動(dòng)態(tài)內(nèi)存申請(qǐng)和釋放用函數(shù)malloc()分配的動(dòng)態(tài)內(nèi)存必須用函數(shù)free()釋放;用n

4、ew申請(qǐng)的動(dòng)態(tài)內(nèi)存必須用delete釋放。因?yàn)樵贑++程序中,從堆中獲取的內(nèi)存單元不會(huì)被自動(dòng)釋放,因此必須使用函數(shù)free()或者用delete釋放這種內(nèi)存。如果從堆中獲取的內(nèi)存在使用完后沒(méi)有被釋放,這部分內(nèi)存在程序結(jié)束之前會(huì)一直被占用,這種情況被稱(chēng)為“內(nèi)存泄漏”。5.2需要new和delete的原因5.2.1需要new和delete的原因5.2.2在堆上創(chuàng)建對(duì)象5.2.1需要new和delete的原因?qū)ψ远x的類(lèi)類(lèi)型,使用函數(shù)malloc()給對(duì)象分配動(dòng)態(tài)空間時(shí)不能自動(dòng)調(diào)用構(gòu)造函數(shù);使用函數(shù)fr

5、ee()釋放對(duì)象所占用的動(dòng)態(tài)空間時(shí)也不能調(diào)用析構(gòu)函數(shù)。C++語(yǔ)言創(chuàng)建了new和delete兩個(gè)運(yùn)算符來(lái)滿(mǎn)足面向?qū)ο蟮男绿匦裕贑++語(yǔ)言程序中,我們應(yīng)該使用new和delete來(lái)創(chuàng)建和銷(xiāo)毀類(lèi)的對(duì)象。5.2.2在堆上創(chuàng)建對(duì)象使用new運(yùn)算符在堆上創(chuàng)建對(duì)象時(shí)能夠自動(dòng)調(diào)用構(gòu)造函數(shù)進(jìn)行初始化;使用delete運(yùn)算符釋放對(duì)象占用的動(dòng)態(tài)內(nèi)存時(shí)能夠自動(dòng)調(diào)用該對(duì)象的析構(gòu)函數(shù)進(jìn)行善后處理?!纠?.1】在堆上創(chuàng)建對(duì)象#includeusingnamespacestd;classSquare{int

6、side;public:Square(intx){side=x;cout<<"Constructiong";}~Square(){cout<<"Destructiong";}voiddisplay(){cout<display();deleteps;//自動(dòng)調(diào)用析構(gòu)函數(shù),然后釋放堆內(nèi)存return0;}該程序運(yùn)行后的輸出

7、結(jié)果如下:Constructiong10Destructiong【例5.2】傳值調(diào)用例子classSquare{intside;public:Square(intx){side=x;cout<<"Constructiong";}~Square(){cout<<"Destructiong";}voiddisplay(){cout<

8、uares(10);f(s);//對(duì)象s以傳值方式傳送給臨時(shí)對(duì)象obs.display();return0;}該程序運(yùn)行后的輸出結(jié)果如下:Constructiong10DestructiongDestructiong10對(duì)象的副本當(dāng)一個(gè)對(duì)象被作為參數(shù)傳遞給函數(shù)時(shí),同時(shí)也創(chuàng)建了該對(duì)象的副本這個(gè)副本將成為函數(shù)的參數(shù)。也就是說(shuō),創(chuàng)建了一個(gè)新的對(duì)象。當(dāng)函數(shù)結(jié)束時(shí),作為函數(shù)的實(shí)際參數(shù)的副本將被銷(xiāo)毀。也就是說(shuō),一個(gè)對(duì)象被銷(xiāo)毀了兩個(gè)問(wèn)題第一個(gè)問(wèn)題:在創(chuàng)建對(duì)象的副本時(shí)是否調(diào)用了構(gòu)造函數(shù)?第二個(gè)問(wèn)題

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶(hù)上傳,版權(quán)歸屬用戶(hù),天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶(hù)請(qǐng)聯(lián)系客服處理。