




已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
6繼承與派生習(xí)題 繼承與多態(tài)習(xí)題一. 基本概念與基礎(chǔ)知識自測題8.1 填空題8.1.1 如果類繼承了類,則類稱為 (1) 類,而類稱為 (2) 類。 (3) 類的對象可作為 (4) 類的對象處理,反過來不行,因為 (5) 。如果強制轉(zhuǎn)換則要注意 (6) 。答案:(1)基類(2)派生類(3)派生類(4)基類(5)派生類有一些新成員(6)只能派生類強制轉(zhuǎn)換為基類8.1.2 當用public繼承從基類派生一個類時,基類的public成員成為派生類的 (1) 成員,protected成員成為派生類的 (2) 成員,對private成員是 (3) 。公有派生可以使其類的 (4) ,所以公有派生是主流。答案:(1)public成員(2)protected成員(3)不可訪問(4)接口不變8.1.3 利用繼承能夠?qū)崿F(xiàn) (1) 。這種實現(xiàn)縮短了程序開發(fā)的時間,VC+中的 (2) 很好地體現(xiàn)了這一點。答案:(1)代碼的復(fù)用(2)MFC編程8.1.4 一個派生類只有一個直接基類的情況稱為 (1) ,而有多個直接基類的情況稱為(2) 。繼承體現(xiàn)了類的 (3) 概念,這在MFC中得到了很好表現(xiàn),MFC中只采用了 (4) 。答案:(1)單繼承(2)多重繼承(3)層次(4)單繼承8.1.5 C+中多態(tài)性包括兩種多態(tài)性: (1) 和 (2) 。前者是通過 (3) 實現(xiàn)的,而后者是通過 (4) 和 (5) 來實現(xiàn)的。答案:(1)編譯時的(2)運行時的(3)函數(shù)和運算符的重載(4)類繼承關(guān)系(5)虛函數(shù)8.1.6 在基類中將一個成員函數(shù)說明成虛函數(shù)后,在其派生類中只要 (1) 、 (2) 和 (3) 完全一樣就認為是虛函數(shù),而不必再加關(guān)鍵字 (4) 。如有任何不同,則認為是 (5) 而不是虛函數(shù)。除了非成員函數(shù)不能作為虛函數(shù)外, (6) 、 (7) 和 (8) 也不能作為虛函數(shù)。答案:(1)同虛函數(shù)名(2)同參數(shù)表(3)同返回類型。如基類中返回基類指針,而派生類中返回派生類指針是允許的(4)virtual(5)重載(6)靜態(tài)成員函數(shù)(7)內(nèi)聯(lián)函數(shù)(8)構(gòu)造函數(shù)8.1.7 純虛函數(shù)定義時在函數(shù)參數(shù)表后加 (1) ,它表明程序員對函數(shù) (2) ,其本質(zhì)是將指向函數(shù)體的指針定為 (3) 。答案:(1)=0(2)不定義(3)NULL8.2 簡答題8.2.1 構(gòu)造函數(shù)和析構(gòu)函數(shù)可以繼承嗎?派生類構(gòu)造函數(shù)各部分的執(zhí)行次序是怎樣的?答:構(gòu)造函數(shù)和析構(gòu)函數(shù)不可以繼承。派生類構(gòu)造函數(shù)各部分的執(zhí)行次序是:1. 調(diào)用基類構(gòu)造函數(shù),按它們在派生類聲明的先后順序,依次調(diào)用。2. 調(diào)用新增成員對象的構(gòu)造函數(shù),按它們在類定義中聲明的先后順序,依次調(diào)用。3. 派生類的構(gòu)造函數(shù)體中的操作。8.2.2 什么叫派生類的同名覆蓋(override)?答:如果派生類聲明了一個和某個基類成員同名的新成員(當然如是成員函數(shù),參數(shù)表也必須一樣,否則是重載),派生類中的新成員就屏蔽了基類同名成員,類似函數(shù)中的局部變量屏蔽全局變量。稱為同名覆蓋(override)。8.2.3 派生類的析構(gòu)函數(shù)中需完成什么任務(wù)?是否要編寫對基數(shù)和成員對象的析構(gòu)函數(shù)的調(diào)用?為什么?答:析構(gòu)函數(shù)的功能是作善后工作,析構(gòu)函數(shù)無返回類型也沒有參數(shù),情況比較簡單。派生類析構(gòu)函數(shù)定義格式與非派生類無任何差異,不要編寫對基數(shù)和成員對象的析構(gòu)函數(shù)的調(diào)用,只要在函數(shù)體內(nèi)把派生類新增一般成員處理好就可以了,因為對新增的成員對象和基類的善后工作,系統(tǒng)會自己調(diào)用成員對象和基類的析構(gòu)函數(shù)來完成。8.2.4 為什么要使用虛基類?怎樣定義虛基類?用一個實例來解釋虛基類在其派生類中的存儲方式。答:在多重繼承是有可能出現(xiàn)同一基類的兩個拷貝,為避免這種情況,可使用虛基類。虛基類(virtual base class)定義方式如下:class 派生類名:virtual 訪問限定符 基類類名.;class 派生類名:訪問限定符 virtual 基類類名.;virtual 關(guān)鍵字只對緊隨其后的基類名起作用。如下派生:存儲關(guān)系如(b),在職研究生類有兩個Person拷貝。采用虛基類后存儲關(guān)系如下: 采用虛基類后在職研究生類儲存圖StudentGStudentEGStudentPersonStudent新成員GStudent新成員PersonEmployee新成員Person成員EGStudent新成員PersonPersonEmployee在職研究生類只有一個Person拷貝。8.2.5 簡單敘述派生類與基類的賦值兼容規(guī)則。答:凡是基類所能解決的問題,公有派生類都可以解決。在任何需要基類對象的地方都可以用公有派生類的對象來代替,這條規(guī)則稱賦值兼容規(guī)則。它包括以下情況:1 派生類的對象可以賦值給基類的對象,這時是把派生類對象中從對應(yīng)基類中繼承來的成員賦值給基類對象。反過來不行,因為派生類的新成員無值可賦。2 可以將一個派生類的對象的地址賦給其基類的指針變量,但只能通過這個指針訪問派生類中由基類繼承來的成員,不能訪問派生類中的新成員。同樣也不能反過來做。3 派生類對象可以初始化基類的引用。引用是別名,但這個別名只能包含派生類對象中的由基類繼承來的成員。8.2.6 比較派生與模板各自的優(yōu)點。答:模板追求的是運行效率,而派生追求的是編程的效率。通用性是模板庫的設(shè)計出發(fā)點之一,這是由泛型算法和函數(shù)對象等手段達到的。為了運行的效率,類模板是相互獨立的,即獨立設(shè)計,沒有使用繼承的思想。對類模板的擴展是采用適配子(adapter)來完成的。應(yīng)該說派生類的目標之一也是代碼的復(fù)用和程序的通用性,最典型的就是MFC,派生類的優(yōu)點是可以由簡到繁,逐步深入,程序編制過程中可以充分利用前面的工作,一步步完成一個復(fù)雜的任務(wù)。8.2.7 是否使用了虛函數(shù)就能實現(xiàn)運行時的多態(tài)性?怎樣才能實現(xiàn)運行時的多態(tài)性?答:不是。實現(xiàn)動態(tài)多態(tài)性時,必須使用基類類型的指針變量或引用,使該指針指向該基類的不同派生類的對象,并通過該指針指向虛函數(shù),才能實現(xiàn)動態(tài)的多態(tài)性。8.2.8 為什么析構(gòu)函數(shù)總是要求說明為虛函數(shù)?答:在基類中及其派生類中都動態(tài)分配內(nèi)存空間時,必須把析構(gòu)函數(shù)定義為虛函數(shù),實現(xiàn)撤消對象時的多態(tài)性。根據(jù)賦值兼容規(guī)則可以用基類的指針指向派生類對象,如果由該指針撤銷派生類對象,則必須將析構(gòu)函數(shù)說明為虛函數(shù),實現(xiàn)多態(tài)性,自動調(diào)用派生類析構(gòu)函數(shù)。我們總是要求將類設(shè)計成通用的,無論其他程序員怎樣調(diào)用都必須保證不出錯,所以必須把析構(gòu)函數(shù)定義為虛函數(shù)。8.2.9 什么是抽象類?含有純虛函數(shù)的類是抽象類嗎?答:若定義一個類,它只能用作基類來派生出新的類,而不能用來定義對象,則稱為抽象類。含有純虛函數(shù)的類是抽象類。二. 編程與綜合練習(xí)題8.3 請用類的派生方式來組織下列動物實體與概念:動物,脊椎動物亞門,節(jié)肢動物門,魚綱,鳥綱,爬行綱,哺乳綱,昆蟲綱,鯊魚,青魚,海馬,鸚鵡,海鷗,喜鵲,蝙蝠,翼龍,蜻蜓,金龜,揚子鱷,袋鼠,金絲猴,虎,蜈蚣,蜘蛛,蝗蟲,知了,螃蟹,蝦。解:動物派生出:脊椎動物亞門和節(jié)肢動物門。脊椎動物亞門派生出:魚綱,鳥綱,爬行綱,哺乳綱。魚綱派生出:鯊魚,青魚,海馬。鳥綱派生出:鸚鵡,海鷗,喜鵲。爬行綱派生出:翼龍,金龜,揚子鱷。哺乳綱派生出:蝙蝠,袋鼠,金絲猴,虎。節(jié)肢動物門派生出:昆蟲綱,蜈蚣(多足綱),蜘蛛(蜘形綱),螃蟹,蝦(甲殼綱)。昆蟲綱派生出:蜻蜓,蝗蟲,知了。8.4 定義商品類及其多層的派生類。以商品類為基類。第一層派生出服裝類、家電類、車輛類。第二層派生出襯衣類、外衣類、帽子類、鞋子類;空調(diào)類、電視類、音響類;自行車類、轎車類、摩托車類。要求給出基本屬性和派生過程中增加的屬性。8.5 以點(point)類為基類,重新定義矩形類和圓類。點為直角坐標點,矩形水平放置,由左下方的頂點和長寬定義。圓由圓心和半徑定義。派生類操作判斷任一坐標點是在圖形內(nèi),還是在圖形的邊緣上,還是在圖形外。缺省初始化圖形退化為點。要求包括拷貝構(gòu)造函數(shù)。編程測試類設(shè)計是否正確。8.6 幾何形體的派生關(guān)系如下:對平面形體有長和面積,對立體有表面積和體積,對幾何圖形基類,周長、面積和體積應(yīng)怎樣計算(用什么函數(shù))?對平面圖形體積怎樣計算(用什么函數(shù))?對立體圖形周長怎么計算(用什么函數(shù))?要求實現(xiàn)運行時的多態(tài)性。請編程,并測試。8.7 某公司雇員(employee)包括經(jīng)理(manager),技術(shù)人員(technician)和銷售員(salesman)。開發(fā)部經(jīng)理(developermanger),既是經(jīng)理也是技術(shù)人員。銷售部經(jīng)理(salesmanager),既是經(jīng)理也是銷售員。以employ類為虛基類派生出manager,technician和salesman類;再進一步派生出developermanager和salesmanager類。employee類的屬性包括姓名、職工號、工資級別,月薪(實發(fā)基本工資加業(yè)績工資)。操作包括月薪計算函數(shù)(pay()),該函數(shù)要求輸入請假天數(shù),扣去應(yīng)扣工資后,得出實發(fā)基本工資。technician類派生的屬性有每小時附加酬金和當月工作時數(shù),及研究完成進度系數(shù)。業(yè)績工資為三者之積。也包括同名的pay()函數(shù),工資總額為基本工資加業(yè)績工資。salesman類派生的屬性有當月銷售額和酬金提取百分比,業(yè)績工資為兩者之積。也包括同名的pay()函數(shù),工資總額為基本工資加業(yè)績工資。manager類派生屬性有固定獎金額和業(yè)績系數(shù),業(yè)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 專項01字音(解析版)
- 解讀歐陽修和王安石
- 孩子委托看護協(xié)議
- 我心飛揚演講稿
- 新員工輔導(dǎo)評語
- 胃腸充盈法超聲造影用于體檢人群胃、十二指腸疾病篩查的作用研究
- 《商業(yè)插畫創(chuàng)意與表現(xiàn)》課件-【7】商業(yè)插畫的風(fēng)格與表現(xiàn)形式
- 春日音樂會活動策劃
- 建筑結(jié)構(gòu)設(shè)計規(guī)范與施工方法手冊
- 食品包裝行業(yè)智能化食品包裝材料研究與開發(fā)方案
- 幼兒園獲獎公開課:大班語言繪本《好消息壞消息》課件
- 宇樹科技在機器人領(lǐng)域的技術(shù)突破與應(yīng)用
- 《高危作業(yè)培訓(xùn)》課件
- 中央2025年中國科協(xié)所屬單位招聘應(yīng)屆生27人筆試歷年參考題庫附帶答案詳解
- 2025年南京信息職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試近5年常考版參考題庫含答案解析
- 2025-2030年中國印染行業(yè)未來發(fā)展趨勢及前景調(diào)研分析報告
- 民航安全文化概論課件
- 安裝工程質(zhì)量通病防治手冊
- 充電樁維保投標方案
- 力與運動的關(guān)系(專題訓(xùn)練)【三大題型】(解析版)-八年級物理下冊
- 《心理健康教育主題班會》主題
評論
0/150
提交評論