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

正文內(nèi)容

第八章多態(tài)性-資料下載頁(yè)

2025-08-01 13:22本頁(yè)面
  

【正文】 設(shè)計(jì) 52 ? 可以讓成員函數(shù)操作一般化,用基類(lèi)的指針指向不同的派生類(lèi)的對(duì)象時(shí),基類(lèi)指針調(diào)用其虛成員函數(shù),則會(huì)調(diào)用其真正指向?qū)ο蟮某蓡T函數(shù),而不是基類(lèi)中定義的成員函數(shù)(只要派生類(lèi)改寫(xiě)了該成員函數(shù))。 若不是虛函數(shù),則不管基類(lèi)指針指向的哪個(gè)派生類(lèi)對(duì)象,調(diào)用時(shí)都 會(huì)調(diào)用基類(lèi)中定義的那個(gè)函數(shù)。 (第七章 通用顯示程序的幻想 例子 74) C++語(yǔ)言程序設(shè)計(jì) 53 例 84 include iostream using namespace std。 class B0 //基類(lèi) B0聲明 {public: //外部接口 virtual void display() //虛成員函數(shù) {coutB0::display()endl。} }。 class B1: public B0 //公有派生 { public: void display() { coutB1::display()endl。 } }。 class D1: public B1 //公有派生 { public: void display() { coutD1::display()endl。 } }。 虛 函 數(shù) void fun(B0 *ptr) //普通函數(shù) { ptrdisplay()。 } int main() //主函數(shù) { B0 b0, *p。 //聲明基類(lèi)對(duì)象和指針 B1 b1。 //聲明派生類(lèi)對(duì)象 D1 d1。 //聲明派生類(lèi)對(duì)象 p=amp。b0。 fun(p)。 //調(diào)用基類(lèi) B0函數(shù)成員 p=amp。b1。 fun(p)。 //調(diào)用派生類(lèi) B1函數(shù)成員 p=amp。d1。 fun(p)。 //調(diào)用派生類(lèi) D1函數(shù)成員 } 運(yùn)行結(jié)果: B0::display() B1::display() D1::display() 54 C++語(yǔ)言程序設(shè)計(jì) 55 虛析構(gòu)函數(shù) 何時(shí)需要虛析構(gòu)函數(shù)? ? 當(dāng)你可能通過(guò)基類(lèi)指針刪除派生類(lèi)對(duì)象時(shí) ? 如果你打算允許其他人通過(guò)基類(lèi)指針調(diào)用對(duì)象的析構(gòu)函數(shù)(通過(guò) delete這樣做是正常的),并且被析構(gòu)的對(duì)象是有重要的析構(gòu)函數(shù)的派生類(lèi)的對(duì)象,就需要讓基類(lèi)的析構(gòu)函數(shù)成為虛擬的。 虛 函 數(shù) C++語(yǔ)言程序設(shè)計(jì) 56 純虛函數(shù) ( pure virtual function)是指被標(biāo)明為不具體實(shí)現(xiàn)的虛擬成員函數(shù)。它用于這樣的情況:定義一個(gè)基類(lèi)時(shí),會(huì)遇到無(wú)法定義基類(lèi)中虛函數(shù)的具體實(shí)現(xiàn),其實(shí)現(xiàn)依賴(lài)于不同的派生類(lèi)。定義純虛函數(shù)的一般格式為: virtual 返回類(lèi)型 函數(shù)名(參數(shù)表) =0; 含有純虛函數(shù)的基類(lèi)是不能用來(lái)定義對(duì)象的。純虛函數(shù)沒(méi)有實(shí)現(xiàn)部分,不能產(chǎn)生對(duì)象,所以含有純虛函數(shù)的類(lèi)是抽象類(lèi)。 定義純虛函數(shù)必須注意: 1 定義純虛函數(shù)時(shí),不能定義虛函數(shù)的實(shí)現(xiàn)部分。即使是函數(shù)體為空也不可以,函數(shù)體為空就可以執(zhí)行,只是什么也不做就返回。而純虛函數(shù)不能調(diào)用。 2 “=0”表明程序員將不定義該函數(shù),函數(shù)聲明是為派生類(lèi)保留一個(gè)位置?!?=0”本質(zhì)上是將指向函數(shù)體的指針定為 NULL。 3 在派生類(lèi)中必須有重新定義的純虛函數(shù)的函數(shù)體,這樣的派生類(lèi)才能用來(lái)定義對(duì)象。 純虛函數(shù) C++語(yǔ)言程序設(shè)計(jì) 57 抽象類(lèi) 帶有純虛函數(shù)的類(lèi)稱(chēng)為抽象類(lèi) : class 類(lèi)名 { virtual 類(lèi)型 函數(shù)名 (參數(shù)表 )=0。 //純虛函數(shù) ... } 純虛函數(shù)與抽象類(lèi) C++語(yǔ)言程序設(shè)計(jì) 58 抽象類(lèi) 純虛函數(shù)與抽象類(lèi) ? 作用 – 抽象類(lèi)為抽象和設(shè)計(jì)的目的而聲明,將有關(guān)的數(shù)據(jù)和行為組織在一個(gè)繼承層次結(jié)構(gòu)中,保證派生類(lèi)具有要求的行為。 – 對(duì)于暫時(shí)無(wú)法實(shí)現(xiàn)的函數(shù),可以聲明為純虛函數(shù),留給派生類(lèi)去實(shí)現(xiàn)。 ? 注意 – 抽象類(lèi)只能作為基類(lèi)來(lái)使用。 – 不能聲明抽象類(lèi)的對(duì)象。 – 構(gòu)造函數(shù)不能是虛函數(shù),析構(gòu)函數(shù)可以是虛函數(shù)。 C++語(yǔ)言程序設(shè)計(jì) 59 例 85 純虛函數(shù)與抽象類(lèi) include iostream using namespace std。 class B0 //抽象基類(lèi) B0聲明 { public: //外部接口 virtual void display( )=0。 //純虛函數(shù)成員 }。 class B1: public B0 //公有派生 { public: void display(){coutB1::display()endl。} //虛成員函數(shù) }。 class D1: public B1 //公有派生 { public: void display(){coutD1::display()endl。} //虛成員函數(shù) }。 void fun(B0 *ptr) //普通函數(shù) { ptrdisplay()。 } int main() //主函數(shù) { B0 *p。 //聲明抽象基類(lèi)指針 B1 b1。 //聲明派生類(lèi)對(duì)象 D1 d1。 //聲明派生類(lèi)對(duì)象 p=amp。b1。 fun(p)。 //調(diào)用派生類(lèi) B1函數(shù)成員 p=amp。d1。 fun(p)。 //調(diào)用派生類(lèi) D1函數(shù)成員 } 運(yùn)行結(jié)果: B1::display() D1::display() 60 C++語(yǔ)言程序設(shè)計(jì) 61 小結(jié)與復(fù)習(xí)建議 ? 主要內(nèi)容 –多態(tài)性的概念、運(yùn)算符重載、虛函數(shù)、純虛函數(shù)、抽象類(lèi) ? 達(dá)到的目標(biāo) –理解多態(tài)的概念,學(xué)會(huì)運(yùn)用多態(tài)機(jī)制。 ? 實(shí)驗(yàn)任務(wù) –實(shí)驗(yàn)七
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1