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

正文內(nèi)容

c電子課件(下)第八章-文庫吧資料

2024-12-29 12:16本頁面
  

【正文】 st{ Node *head,*tail。 //把 數(shù)據(jù)對(duì)象連接到結(jié)點(diǎn) friend class List。 //在當(dāng)前結(jié)點(diǎn)后插入一個(gè)結(jié)點(diǎn) Node* RemoveAfter()。 //指針域 public: Node()。 Class Node{ Object* info。 繼承與多態(tài)的應(yīng)用 ——單鏈表派生類(選讀) 抽象類中的 析構(gòu)函數(shù)也是虛函數(shù),這一點(diǎn)非常重要。當(dāng)抽象類在派生時(shí)重新定義三個(gè)純虛函數(shù),可以進(jìn)行各種類型,包括類和結(jié)構(gòu)對(duì)象的比較和輸出 。 //析構(gòu)函數(shù)可為虛函數(shù),構(gòu)造函數(shù)不行 繼承與多態(tài)的應(yīng)用 ——單鏈表派生類(選讀) 結(jié)點(diǎn)組織,采用結(jié)點(diǎn)類加數(shù)據(jù)類 數(shù)據(jù)類定義 : 本題要點(diǎn): 采用虛函數(shù)實(shí)現(xiàn)多態(tài)性,達(dá)到通用的目的。 //純虛函數(shù) ,參數(shù)必須為引用或指針 virtual void Print()=0。 //純虛函數(shù) ,參數(shù)必須為引用或指針 virtual bool operator!=(Object amp。 數(shù)據(jù)域 (指向抽象 數(shù)據(jù)類的指 針) 由抽象類派 生的數(shù)據(jù)類 對(duì)象(如串 對(duì)象) 指針域(指 向下一結(jié) 點(diǎn)) 結(jié)點(diǎn)類對(duì)象 動(dòng)態(tài)建立的 數(shù)據(jù)類對(duì)象 圖 結(jié)點(diǎn)構(gòu)造 class Object{ //數(shù)據(jù)類為抽象類 public: Object(){} virtual bool operator(Object amp。 第一步 改造 【 例 】的頭文件,不 采用模板類,而采用虛函數(shù)實(shí)現(xiàn)多態(tài)性,達(dá)到通用的目的 。 在主函數(shù)中全部用指向基類的指針來調(diào)用 純虛函數(shù) 業(yè)績(jī)分 基類定義 業(yè)績(jī)分 學(xué)生派生類定義 業(yè)績(jī)分 教師派生類定義 驗(yàn)證 主函數(shù) 【 例 】 用 虛函數(shù) 來實(shí)現(xiàn) 辛普生 法求函數(shù)的定積分。 3 在派生類中必須有重新定義的純虛函數(shù)的函數(shù)體,這樣的派生類才能用來定義對(duì)象。 2 “=0”表明程序員將不定義該函數(shù),函數(shù)聲明是為派生類保留一個(gè)位置。即使是函數(shù)體為空也不可以,函數(shù)體為空就可以執(zhí)行,只是什么也不做就返回。純虛函數(shù)沒有實(shí)現(xiàn)部分,不能產(chǎn)生對(duì)象,所以含有純虛函數(shù)的類是 抽象類 。它用于這樣的情況:定義一個(gè)基類時(shí),會(huì)遇到無法定義基類中虛函數(shù)的具體實(shí)現(xiàn),其實(shí)現(xiàn)依賴于不同的派生類。 這里再次強(qiáng)調(diào) 動(dòng)態(tài)生成的對(duì)象必須顯式撤銷 。 delete pper4。 //把 stu1的數(shù)據(jù)拷入 pstu4指向的對(duì)象 pstu4PrintStudentInfo()。 Student *pstu4=new Student。 //只需在此聲明一次 ,派生類的析構(gòu)函數(shù)全為虛函數(shù) }。 通常 要求將類設(shè)計(jì)成通用的 ,無論其他程序員怎樣調(diào)用都必須保證不出錯(cuò),所以 必須把析構(gòu)函數(shù)定義為虛函數(shù) 。正確的定義必須不包括virtual。所以多態(tài)性總是要付出一定代價(jià),但通用性是一個(gè)更高的目標(biāo)。 7. 函數(shù)執(zhí)行速度要稍慢一些。 6. 析構(gòu)函數(shù)可定義為虛函數(shù),構(gòu)造函數(shù)不能定義虛函數(shù),因?yàn)樵谡{(diào)用構(gòu)造函數(shù)時(shí)對(duì)象還沒有完成實(shí)例化。 4. 一個(gè)類對(duì)象的靜態(tài)和動(dòng)態(tài)構(gòu)造是相同的, 實(shí)現(xiàn)動(dòng)態(tài)多態(tài)性時(shí),必須使用基類類型的指針變量或引用,使該指針指向該基類的不同派生類的對(duì)象,并通過該指針指向虛函數(shù),才能實(shí)現(xiàn)動(dòng)態(tài)的多態(tài)性。這是因?yàn)樘摵瘮?shù)僅適用于有繼承關(guān)系的類對(duì)象。如 基類中返回基類指針,派生類中返回派生類指針是允許的 ,這是一個(gè)例外。 成員函數(shù)設(shè)置為虛函數(shù)的要點(diǎn): 1. 派生類中定義虛函數(shù)必須與基類中的虛函數(shù)同名外,還必須同參數(shù)表,同返回類型。 虛函數(shù)的定義 【 例 】 計(jì)算學(xué)分。 虛函數(shù)定義要點(diǎn): 虛函數(shù)與運(yùn)行時(shí)的多態(tài)性: 【 例 】 計(jì)算學(xué)分。但重新定義時(shí)不僅要同名,而且它的參數(shù)表和返回類型全部與基類中的虛函數(shù)一樣,否則出錯(cuò)。 當(dāng)一個(gè)類的某個(gè)成員函數(shù)被定義為虛函數(shù),則由該類派生出來的所有派生類中,該函數(shù)始終保持虛函數(shù)的特征。 多態(tài)性與虛函數(shù) 虛函數(shù)的定義 動(dòng)態(tài)綁定 (選讀) 純虛函數(shù) 繼承與多態(tài)的應(yīng)用 —— 單鏈表派生類(選讀) 虛函數(shù)的定義 虛函數(shù)的概念: 虛函數(shù)是一個(gè)類的成員函數(shù),定義格式如下: virtual 返回類型 函數(shù)名(參數(shù)表) {… }; 關(guān)鍵字 virtual指明該成員函數(shù)為虛函數(shù)。通用性是程序追求的主要目標(biāo)之一。它是 通過類繼承關(guān)系和虛函數(shù)來實(shí)現(xiàn)的。利用多態(tài)性技術(shù),可以調(diào)用同一個(gè)函數(shù)名的函數(shù),實(shí)現(xiàn)完全不同的功能。 派生類應(yīng)用討論 多態(tài)性與虛函數(shù) 多態(tài)性: 多態(tài)性是面向?qū)ο蟪绦蛟O(shè)計(jì)的關(guān)鍵技術(shù)之一。 派生類的目標(biāo)之一也是代碼的復(fù)用和程序的通用性,最典型的就是 MFC,派生類的優(yōu)點(diǎn)是可以由簡(jiǎn)到繁,逐步深入,程序編制過程中可以充分利用前面的工作,一步步完成一個(gè)復(fù)雜的任務(wù)。對(duì)類模板的擴(kuò)展是采用適配子( adapter)來完成的。這樣程序員就可以放心地使用它,而不需要為它做任何事情。類 string就是如此。 更深入地探討后會(huì)發(fā)現(xiàn):成員對(duì)象體現(xiàn)了封裝更深層次的含義。 兩個(gè) A無論如何無法分辨出來。...}。派生類采用繼承方法,成員對(duì)象是聚合的概念。 【 例 】 按賦值兼容規(guī)則為例 。 3. 派生類對(duì)象可以初始化基類的引用。 2. 可以將一個(gè)派生類的對(duì)象的地址賦給其基類的指針變量,但只能通過這個(gè)指針訪問派生類中由基類繼承來的成員,不能訪問派生類中的新成員。它 包括以下情況: 派生類應(yīng)用討論 1. 派生類的對(duì)象可以賦值給基類的對(duì)象,這時(shí)是把派生類對(duì)象中 從對(duì)應(yīng)基類中繼承來的成員賦值給基類對(duì)象。 用 UML類圖表示派生 下圖是由讀物類派生出書 、 雜志和電子讀物類 。 泛化的圖示方法是將關(guān)聯(lián)的開箭頭改為 三角形箭頭 ,由基類指向派生類。從字面上理解出發(fā)點(diǎn)相反, C++是從共有的基類(父類)派生出派生類(子類),而 UML是由具有某些共性的類,抽象出共有的基類。 虛基類(選讀) 【 例 】 虛基類在多層多重繼承中的應(yīng)用 ——在職研究生類定義。唯一的一次調(diào)用是在 EGStudent構(gòu)造函數(shù)中 。return 0; } 運(yùn)行結(jié)果: Constructor Bclass3 //第一個(gè)虛擬基類 ,與派生類析構(gòu)函數(shù)排列無關(guān) Constructor Bclass2 //第二個(gè)虛擬基類 Constructor Bclass1 //非虛擬基類 Constructor Object //對(duì)象成員 派生類建立 ! 主程序運(yùn)行 ! 派生類析構(gòu) ! deconstructor Object //析構(gòu)次序相反 deconstructor Bclass1 deconstructor Bclass2 deconstructor Bclass3 //析構(gòu)的次序與構(gòu)造的次序相反。 int main(){ Dclass dd。} ~Dclass(){cout派生類析構(gòu) !\n。 class Dclass:public Bclass1,virtual Bclass3,virtual Bclass2{ Object object。} ~Bclass3(){coutdeconstructor Bclass3\n。 虛基類(選讀) 【 例 】 在采用虛基類的多重繼承中,構(gòu)造與析構(gòu)的次序。} ~Bclass2(){coutdeconstructor Bclass2\n。}}。 class Bclass1{ public: Bclass1(){coutconstructor Bclass1\n。} ~Object(){coutdeconstructor Object\n。 構(gòu)造函數(shù)執(zhí)行次序: 虛基類(選讀) 【 例 】 在采用虛基類的多重繼承中構(gòu)造與析構(gòu)的次序。 第三批是成員對(duì)象的構(gòu)造函數(shù)。 虛擬繼承的構(gòu)造函數(shù): 虛基類(選讀) 在派生類對(duì)象的 創(chuàng)建 中: 首先是虛基類的構(gòu)造函數(shù)并按它們聲明的順序構(gòu)造。 //所列出的成員對(duì)象名全部為新增成員對(duì)象的名字 在多層虛擬繼承構(gòu)造函數(shù)中,基類名不僅要列出直接基類,而且要列出底層虛基類,否則編譯器認(rèn)為出錯(cuò)。這種繼承稱為 虛擬繼承( virtual inheritance)。 class 派生類名 :訪問限定符 virtual 基類類名 {...}。 class Employee:virtual public Person{...}。可以把class Person這個(gè)共同基類設(shè)置為 虛基類 ,這樣就僅有一個(gè) Person基類成員,從不同路徑繼承來的同名數(shù)據(jù)成員( 身份證號(hào) )在內(nèi)存中就是同一個(gè)數(shù)據(jù)。在Cone的成員函數(shù)中可直接訪問 Circle和 Line中的公有成員和保護(hù)成員。 本例中類 Circle為圓;類 Line為高;類 Cone為圓錐,由Circle和 Line公有派生而來。 注意: 【 例 】 由圓和高多重繼承派生出圓錐。訪問身份證號(hào),應(yīng)通過 class Person中的公有成員函數(shù)(接口)GetNo()和 SetNo()進(jìn)行 : ::SetNo(no)。 作用域分辨符不能嵌套使用 ,如: ::Student::No //學(xué)生號(hào) ::Student::Person::No //身份證號(hào) 是 錯(cuò)誤 的。 Person Person Student Employee GStudent EGStudent Person成員 Person成員 Student新成員 GStudent新成員 Employee新成員 EGStudent新成員 圖 ( b)在職研究生派生類存儲(chǔ)圖 建議采用有確定字面意思的標(biāo)識(shí)符,它可以被編譯器簡(jiǎn)單區(qū)分出來。 //數(shù)據(jù)成員 基類名 ::成員名 (參數(shù)表 )。 進(jìn)一步,如果“教職工編號(hào)” 是由兩個(gè)基類“教師”和“行政人員”共同的基類“教職工”類繼承來的,只有同一個(gè)標(biāo)識(shí)符,也不能用改標(biāo)識(shí)符來區(qū)分。 多重繼承與派生類成員標(biāo)識(shí)(選讀) 由多個(gè)基類共同派生出新的派生類,這樣的繼承結(jié)構(gòu)被稱為多重繼承或多繼承( multipleinheritance) 椅子 床 沙發(fā) (單繼承 ) 躺椅 (多重繼承 ) 兩用沙發(fā) (多重繼承 ) 圖 椅子 , 床到兩用沙發(fā) 多重繼承實(shí)例: 在冊(cè)人員 學(xué)生 (單繼承 ) 教職工 (單繼承 ) 兼職教師 (單繼承 ) 教師 (單繼承 ) 行政人員 (單繼承 ) 工人 (單繼承 ) 研究生 (單繼承 ) 行政人員兼教師 (多重繼承 ) 在職研究生 (多重繼承 ) 研究生助教 (多重繼承 ) 圖 大學(xué)在冊(cè)人員繼承關(guān)系 多重繼承與派生類成員標(biāo)識(shí)(選讀) 派生出來的新類同樣可以作為基類再繼續(xù)派生出更新的類,依此類推形成一個(gè) 層次結(jié)構(gòu) 。 只要在函數(shù)體內(nèi)把派生類新增的一般成員處理好就可以了 ,而 對(duì)新增的成員對(duì)象和基類的善后工作,系統(tǒng)會(huì)自己調(diào)用成員對(duì)象和基類的析構(gòu)函數(shù)來完成 。 如果基類定義了帶有形參表的構(gòu)造函數(shù)時(shí),派生類就應(yīng)當(dāng)定義構(gòu)造函數(shù)。 派生類的構(gòu)造函數(shù)與析構(gòu)函數(shù) 注意: 在派生類構(gòu)造函數(shù)中,只要基類不是使用無參的默認(rèn)構(gòu)造函數(shù)都要顯式給出基類名和參數(shù)表 。 ,按它們?cè)陬惗x中聲明的先后順序,順序調(diào)用。 冒號(hào)后的基類名,成員對(duì)象名的次序可以隨意,這里的次序與調(diào)用次序無關(guān)。 所謂不能繼承并不是不能利用,而是把基類的構(gòu)造函數(shù)作為新的構(gòu)造函數(shù)的一部分,或者講調(diào)用基類的構(gòu)造函數(shù)。合理使用保護(hù)限定方式可以在復(fù)雜的類層次關(guān)系中取一個(gè)共享訪問和成員封裝隱蔽性的折衷。 在新的保護(hù)派生類中可直接訪問由保護(hù)派生傳遞過來的底層基類的公有和保護(hù)成員,而不可直接訪問由私有派生傳遞來的底層基類的公有和保護(hù)成員。與私有派生相同。 公有派生與私有派生 保護(hù)派生 : 直接派生 : 基類的私有成員仍是派生類的私有成員,不可直接訪問,而基類中的公有和保護(hù)成員全部成為派生類的保護(hù)成員,在派生類中可以直接訪問。 公有派生與私有派生 訪問限定符討論: 派生類成員(新增成員)函數(shù)對(duì)基類(繼承來的)成員的訪問(調(diào)用和操作) ,和 從派生類對(duì)象之外對(duì)派生類對(duì)象中的基類成員的訪問 。 聚合是一種完善的封裝。 提倡完善的類對(duì)象封裝,不僅封裝數(shù)據(jù)和對(duì)數(shù)據(jù)的操作,而且封裝資源的動(dòng)態(tài)分配與釋放,形成一個(gè)完備的子系統(tǒng)。 驗(yàn)證 主函數(shù)
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1