freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

堆與復(fù)制構(gòu)造函數(shù)ppt課件(已修改)

2025-05-10 23:04 本頁(yè)面
 

【正文】 《 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ù) 堆 需要 new和 delete的原因 默認(rèn)的復(fù)制構(gòu)造函數(shù) 自定義復(fù)制構(gòu)造函數(shù) 堆 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)存單元。 ? 這種動(dòng)態(tài)內(nèi)存分配方式能夠顯著地提高內(nèi)存的利用率。 C++程序的內(nèi)存布局 Stack 棧 Heap 堆 Global data 全局?jǐn)?shù)據(jù)區(qū) 程序代碼區(qū)program code 代碼區(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: Last in, First Out)的順序, ? 即釋放棧中對(duì)象所占內(nèi)存時(shí)的順序剛好與給這些對(duì)象分配棧中內(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( )釋放; ? 用 new申請(qǐng)的動(dòng)態(tài)內(nèi)存必須用 delete 釋放。 ? 因?yàn)樵?C++程序中,從堆中獲取的內(nèi)存單元不會(huì)被自動(dòng)釋放,因此必須使用函數(shù) free( )或者用 delete釋放這種內(nèi)存。 ? 如果從堆中獲取的內(nèi)存在使用完后沒(méi)有被釋放,這部分內(nèi)存在程序結(jié)束之前會(huì)一直被占用,這種情況被稱(chēng)為“ 內(nèi)存泄漏 ”。 需要 new和 delete的原因 ? 需要 new和 delete的原因 ? 在堆上創(chuàng)建對(duì)象 需要 new和 delete的原因 ? 對(duì)自定義的類(lèi)類(lèi)型,使用函數(shù) malloc( )給對(duì)象分配動(dòng)態(tài)空間時(shí)不能自動(dòng)調(diào)用構(gòu)造函數(shù); ? 使用函數(shù) free( )釋放對(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ū)ο蟮男绿匦裕? ? 在 C++語(yǔ)言程序中,我們應(yīng)該使用 new和delete來(lái)創(chuàng)建和銷(xiāo)毀類(lèi)的對(duì)象。 在堆上創(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)行善后處理。 【 例 】 在堆上創(chuàng)建對(duì)象 include iostream using namespace std。 class Square { int side。 public: Square(int x) { side = x。 coutConstructiong\n。 } ~Square( ){ coutDestructiong\n。 } void display() { cout side \n。 } }。 【 例 】 在堆上創(chuàng)建對(duì)象 (續(xù)) int main() { Square *ps=new Square(10)。 //分配堆內(nèi)存并調(diào)用構(gòu)造函數(shù)初始化 psdisp
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號(hào)-1