面向?qū)ο蟪绦蛟O(shè)計(jì)教程-c語(yǔ)言描述-第二版-馬石安_第1頁(yè)
面向?qū)ο蟪绦蛟O(shè)計(jì)教程-c語(yǔ)言描述-第二版-馬石安_第2頁(yè)
面向?qū)ο蟪绦蛟O(shè)計(jì)教程-c語(yǔ)言描述-第二版-馬石安_第3頁(yè)
面向?qū)ο蟪绦蛟O(shè)計(jì)教程-c語(yǔ)言描述-第二版-馬石安_第4頁(yè)
面向?qū)ο蟪绦蛟O(shè)計(jì)教程-c語(yǔ)言描述-第二版-馬石安_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

面向?qū)﹀璩绦蛟O(shè)計(jì)教程-C卄語(yǔ)言描述-第二版第1章習(xí)題答案名詞解釋抽象:抽彖(Abstract)就是忽略事物中與當(dāng)前目標(biāo)無(wú)關(guān)的非本質(zhì)特征,而強(qiáng)調(diào)與當(dāng)前目標(biāo)有關(guān)的本質(zhì)特征,從而找出事物的共性,并把具有共性的事物劃為一類。面向?qū)ο蠓椒ㄖ械某橄?,是指?duì)具體問題(對(duì)彖)進(jìn)行概括,抽出一類對(duì)彖的公共性質(zhì)并加以描述的過程。封裝:面向?qū)﹀璺椒ㄖ械姆庋b就是把將抽彖出來(lái)的對(duì)彖的屬性和行為結(jié)合成一個(gè)獨(dú)立的單位,并盡可能隱蔽對(duì)彖的內(nèi)部細(xì)節(jié)。消息:消息是面向?qū)﹀璩绦蛟O(shè)計(jì)用來(lái)描述對(duì)彖之間通信的機(jī)制。一個(gè)消息就是一個(gè)對(duì)彖要求另一個(gè)對(duì)象實(shí)施某種操作的一個(gè)請(qǐng)求。填空題面向過程的結(jié)構(gòu)化程序設(shè)計(jì)方法 面向?qū)﹀璩绦蛟O(shè)計(jì)方法⑵順序選擇循環(huán)程序=數(shù)據(jù)結(jié)構(gòu)+算法 程序=對(duì)彖+消息過程類抽象性封裝性繼承性多態(tài)性選擇題(1)B⑵c⑶D (4)C(5)D(6)A判斷題⑺A(8)BC(9)AD(l)t簡(jiǎn)答題⑵f⑶f (4)f (5)t(6)f (7)f (8)t⑴結(jié)構(gòu)化程序設(shè)計(jì)方法著眼于系統(tǒng)要實(shí)現(xiàn)的功能,從系統(tǒng)的輸入和輸出出發(fā),分析系統(tǒng)要做哪些事情,進(jìn)而考慮如何做這些事情,自頂向下地對(duì)系統(tǒng)的功能進(jìn)行分解,來(lái)建立系統(tǒng)的功能結(jié)構(gòu)和相應(yīng)的程序模塊結(jié)構(gòu),有效地將一個(gè)較復(fù)雜的程序系統(tǒng)設(shè)計(jì)任務(wù)分解成許多易于控制和處理的子任務(wù),便于開發(fā)和維護(hù)。隨著程序規(guī)模與復(fù)雜性的增長(zhǎng),這種面向過程的結(jié)構(gòu)化程序設(shè)計(jì)方法存在明顯的不足之處。首先是數(shù)據(jù)安全性問題,由于數(shù)據(jù)被每個(gè)模塊所共用,因此是不安全的,一旦出錯(cuò),很難查明原因。其次是可維護(hù)性及可重用性差,它把數(shù)據(jù)結(jié)構(gòu)和算法分離為相互獨(dú)立的實(shí)體,一旦數(shù)據(jù)結(jié)構(gòu)需要改變時(shí),常常要涉及整個(gè)程序,修改工作量極大并容易產(chǎn)生新的錯(cuò)誤。每一種相對(duì)于老問題的新方法都要帶來(lái)額外的開銷。另外,圖形用戶界面的應(yīng)用程序,很難用過程來(lái)描述和實(shí)現(xiàn),開發(fā)和維護(hù)也都很困難。⑵面向?qū)﹀璧某绦蛟O(shè)計(jì)方法中,將程序設(shè)計(jì)為一組相互協(xié)作的對(duì)彖(Object)而不是一組相互協(xié)作的函數(shù)。在程序中,屬性用數(shù)據(jù)表示,用來(lái)描述對(duì)象靜態(tài)特征;行為用程序代碼實(shí)現(xiàn),用來(lái)描述對(duì)彖動(dòng)態(tài)特征。可見,在面向?qū)﹀璧某绦蛟O(shè)計(jì)方法中,對(duì)象是數(shù)據(jù)結(jié)構(gòu)和算法的封裝體。對(duì)象之間存在各種聯(lián)系,它們之間通過消息進(jìn)行通信。程序可表示為:程序=對(duì)彖+消息在面向?qū)﹀璩绦蛟O(shè)計(jì)中,它著重于類的設(shè)計(jì)。類正是面向?qū)ο笳Z(yǔ)言的基本程序模塊,通過類的設(shè)計(jì),來(lái)完成實(shí)體的建模任務(wù)。類通過一個(gè)簡(jiǎn)單的外部接II,與外界發(fā)生關(guān)系。一個(gè)類中的操作不會(huì)處理到另一個(gè)類中的數(shù)據(jù),這樣程序模塊的獨(dú)立性、數(shù)據(jù)的安全性就有了良好的保障。程序的執(zhí)行取決于事件發(fā)生的順序,由順序產(chǎn)生的消息來(lái)驅(qū)動(dòng)程序的執(zhí)行。不必預(yù)先確定消息產(chǎn)生的順序,更符合客觀世界的實(shí)際。并且面向?qū)ο蟪绦蛟O(shè)計(jì)方法提供了軟件重用、解決人問題和復(fù)雜問題的有效途徑,具有抽彖性、封裝性、繼承性和多態(tài)性等特點(diǎn)。⑶結(jié)構(gòu)化程序設(shè)計(jì)方法中,把數(shù)據(jù)結(jié)構(gòu)和算法分離為相互獨(dú)立的實(shí)體。在面向?qū)﹀璩绦蛟O(shè)計(jì)中,數(shù)據(jù)結(jié)構(gòu)和算法是封裝在一起,結(jié)合成一個(gè)獨(dú)立的單位,即對(duì)象,并盡可能隱蔽對(duì)彖的內(nèi)部細(xì)節(jié)。對(duì)彖的私有屬性只能由這個(gè)對(duì)彖的行為來(lái)讀取和修改,與外部的聯(lián)系通過公有行為充當(dāng)外部接口。第2章習(xí)題答案名詞解釋引用:所謂引用,就是給對(duì)象起一個(gè)別名,使用該別名可以存取該對(duì)象。換句話說(shuō),是使新對(duì)象和原對(duì)彖共用一個(gè)地址。內(nèi)聯(lián)函數(shù):內(nèi)聯(lián)函數(shù)是使用inline關(guān)鍵字聲明一個(gè)函數(shù)。重載函數(shù):重載函數(shù)通常用來(lái)對(duì)具有相似行為而數(shù)據(jù)類型不同的操作提供一個(gè)通用的名稱。填空題函數(shù)類///*……*/lostieamcin?cout?地址值類型值⑺&對(duì)象聲明值傳遞引用傳遞inlinenew deletex=10, y=10 x=100,y=100選擇題(1)A⑵C⑶c (4)A(5)D(6)D(7)D(8)BC(9)A(10)D判斷題(l)t⑵f⑶f (4)t (5)t(6)t (7)t (8)t簡(jiǎn)答題名字空間用來(lái)防止命名的沖突。除了獨(dú)立引用外,在C++程序中,引用的主要用途是用作函數(shù)參數(shù)和函數(shù)的返回值。在值傳遞機(jī)制中,作為實(shí)參的表達(dá)式的值被復(fù)制到由對(duì)應(yīng)的形參名所標(biāo)識(shí)的一個(gè)對(duì)彖中,作為形參的初始值。函數(shù)體對(duì)形參的訪問、修改都是在這個(gè)標(biāo)識(shí)對(duì)象上操作,與實(shí)參無(wú)關(guān),即數(shù)據(jù)的傳遞是單向的。使用引用作函數(shù)的形參時(shí),調(diào)用函數(shù)的實(shí)參要用變量名。實(shí)參傳遞給形參,相當(dāng)于在被調(diào)用函數(shù)中使用了實(shí)參的別名。于是,在被調(diào)用函數(shù)中對(duì)形參的操作,實(shí)質(zhì)是對(duì)實(shí)參的直接操作,即數(shù)據(jù)的傳遞是雙向的。內(nèi)聯(lián)函數(shù)是使用inline關(guān)鍵字聲明一個(gè)函數(shù)。在程序編譯時(shí),編譯系統(tǒng)將程序中出現(xiàn)內(nèi)聯(lián)函數(shù)調(diào)用的地方用函數(shù)體進(jìn)行替換,進(jìn)而減少了時(shí)間開銷。使用內(nèi)聯(lián)函數(shù)應(yīng)注意:遞歸函數(shù)不能定義為內(nèi)聯(lián)函數(shù)。內(nèi)聯(lián)函數(shù)一般適合于不含有switch和while等復(fù)雜的結(jié)構(gòu)且只有I?5條語(yǔ)句的小函數(shù),否則編譯系統(tǒng)將該函數(shù)視為普通函數(shù)。內(nèi)聯(lián)函數(shù)只能先定義后使用,否則編譯系統(tǒng)也將該函數(shù)視為普通函數(shù)。對(duì)內(nèi)聯(lián)函數(shù)也不能進(jìn)行異常接口聲明。不必一致。所有的參數(shù)是根據(jù)位置和類型而不是名字來(lái)區(qū)分的。編譯系統(tǒng)將根據(jù)函數(shù)參數(shù)的類型和個(gè)數(shù)來(lái)判斷使用哪一個(gè)函數(shù)。程序分析題(寫出程序的輸出結(jié)果,并分析結(jié)果)程序的輸出結(jié)果:num=60ref^lOO程序設(shè)計(jì)題〃xiti2_l.cpp#include<iostreain>#include<cniath>usingnamespacestd;iiitmam(){floatx,y;cout?Mpleasemput2floatstox,y:M?endl;ciii?x?y;floatz=pow(x、y);cout?Hpow(H?x?,,;,?y?H)=H?z?endl;return0;填空題(1)公有 保護(hù) 私有 private pubic(2)作用域 MyClass⑶樣板 實(shí)例(4)11⑸1(6)delete(7)數(shù)據(jù)區(qū) 代碼區(qū) 棧區(qū) 堆區(qū)(8)封裝性 靜態(tài)成員(9)任意訪問權(quán)限許可的(10)友元函數(shù) 友元類(11)效率(12)friendA;選擇題(1)B (2)BC (3)C (4)C (5)B D(8)B (9)AC (10)D (11)C (12)C(15)B (16)D (17)C (18)CD (19)D(22)D (23)C簡(jiǎn)答題}第3章習(xí)題答案B(6)C(7)B(13)B(14)B(20)A(21)A⑴類實(shí)際上由一個(gè)類定義的類型稱為類類型,程序員可以使用這個(gè)新類型在程序中聲明新的變量,具有類類型的變量稱為對(duì)彖。創(chuàng)建對(duì)彖時(shí),類被用作樣板,對(duì)彖稱為類的實(shí)例。⑵定義類一般形式為:class類名{public:<公有數(shù)據(jù)和函數(shù)〉protected:<保護(hù)數(shù)據(jù)和函數(shù)〉private:<私有數(shù)據(jù)和函數(shù)〉};訪問權(quán)限共有三種:分別是公有(public)、保護(hù)(protected)和私有(private)的。⑶指創(chuàng)建類的對(duì)彖。(4)this指針是C卄為成員函數(shù)提供的一個(gè)隱含對(duì)彖指針,它不能被顯式聲明。this指針是一個(gè)局部量,局部于某個(gè)對(duì)象。不同的對(duì)彖調(diào)用同一個(gè)成員函數(shù)時(shí),編譯器根據(jù)this指針來(lái)確定應(yīng)該引用哪一個(gè)對(duì)象的數(shù)據(jù)成員??截悩?gòu)造函數(shù)是一種特殊的構(gòu)造函數(shù),它的作用是用一個(gè)已經(jīng)存在的對(duì)象去初始化另一個(gè)對(duì)象時(shí)。為了保證所引用的對(duì)彖不被修改,通常把引用參數(shù)聲明為const參數(shù)。在以下3種情況下,拷貝構(gòu)造函數(shù)都會(huì)被自動(dòng)調(diào)用:當(dāng)用類的一個(gè)對(duì)彖去初始化該類的另一個(gè)對(duì)彖時(shí)。當(dāng)函數(shù)的形參是類的對(duì)彖,進(jìn)行形參和實(shí)參結(jié)合時(shí)。當(dāng)函數(shù)的返回值是類的對(duì)彖,函數(shù)執(zhí)行完成返回調(diào)用者時(shí)。程序分析題⑴butdefabutdefabut15⑵Exitmaindst5⑶DefaultconstmctorofPartConstructorofPart,3DefaultconstmctorofPartConstmctorofWholeDestiuctoiofWholeDestiuctoiofPart,0DestiuctorofPart,3Desti-uctorofPart,0(4)30程序設(shè)計(jì)題⑴〃xiti3_l.cpp#include<iostreain>usingnamespacestd;classCiicle{public:Circle(floatr){radius=r;}~Circle(){}floataiea(){retuni3.14*radius*radius;}private:floatradius;};mtmaiii(){floatr;cout?“請(qǐng)輸入圓的半徑:”;ciii?i;Ciiclep(i);cout?“半徑為”"的圓的面積為:v?p.area()?endl;return0;}⑵〃xiti3_2.cpp#include<iostreain>usingnamespacestd;classBook{public:Book(intw);staticiiitsuninum;staticiiitgetsuinQ{returnsunmum;}private:mtnum;};Book::Book(iiitw){ui】m=w;suninum-=w;}mtBook::sunmum=120;mtmam(){Bookbl(20);Bookb2(70);cout?Book::getsum()?endl;return0;}第4章習(xí)題答案填空題基派生單繼承多繼承私有繼承方式公有保護(hù)多繼承支配規(guī)則解決二義性使用作用域運(yùn)算符引進(jìn)虛基類選擇題⑴B(2)CD(3)ABC(4)C(5)A(6)C⑺B(8)D(9)AD(10)a判斷題(1)f⑵t⑶f0)t(5)f(6)f簡(jiǎn)答題⑴面向?qū)﹀杓夹g(shù)中,類是數(shù)據(jù)和操作的集合,它們之間有3種主要關(guān)系:Has-A,Uses-A和Is-AoHas-A表示類的包含關(guān)系,用以描述一個(gè)類由多個(gè)“部件類”構(gòu)成。在面向?qū)﹀杓夹g(shù)中,實(shí)現(xiàn)has-A關(guān)系用類成員表示。Uses-A表示一個(gè)類部分地使用另一個(gè)類。在面向?qū)ο蠹夹g(shù)中,這種關(guān)系通過類之間成員函數(shù)的相互聯(lián)系或?qū)﹀鑵?shù)傳遞實(shí)現(xiàn)。另外,通過定義友員也能實(shí)現(xiàn)這種關(guān)系。Is-A表示一種分類方式,描述類的抽象和層次關(guān)系。繼承可以表達(dá)is-A關(guān)系。⑵所謂賦值兼容規(guī)則是指在公有繼承情況卜?,一個(gè)派生類的對(duì)彖可以作為基類的對(duì)彖來(lái)使用的地方。具體來(lái)說(shuō),就是下面3種情況:派生類的對(duì)彖可以賦給基類的對(duì)彖。派生類的對(duì)彖可以初始化基類的引用。派生類的對(duì)象的地址可以賦給指向基類的指針。⑶當(dāng)類的繼承方式為公有繼承時(shí),在派生類中,基類的公有成員和保護(hù)成員被繼承后分別作為派生類的公有成員和保護(hù)成員,這樣使得派生類的成員函數(shù)可以直接訪問它們,而派生類成員函數(shù)無(wú)法直接訪問基類的私有成員。在類外部,派生類的對(duì)彖可以訪問繼承下來(lái)的基類公有成員。當(dāng)類的繼承方式為私有繼承時(shí),在派生類中,基類的公有成員和保護(hù)成員作為派生類的私有成員,派生類的成員函數(shù)町以直接訪問它們,而派生類的成員函數(shù)無(wú)法直接訪問基類的私有成員。在類外部,派生類的對(duì)彖無(wú)法訪問基類的所有成員。當(dāng)類的繼承方式為保護(hù)繼承時(shí),在派生類中,基類的公有成員和保護(hù)成員作為派生類的保護(hù)成員,派生類的成員函數(shù)可以直接訪問它們,而派生類的成員函數(shù)無(wú)法直接訪問基類的私有成員。在類外部,派生類的對(duì)彖無(wú)法訪問基類的所有成員。(4)首先基類構(gòu)造函數(shù)被調(diào)用,子對(duì)象所在類構(gòu)造函數(shù)次之,最后執(zhí)行派生類構(gòu)造函數(shù)。若派生類有構(gòu)造函數(shù)而基類沒有,當(dāng)創(chuàng)建派生類的對(duì)彖時(shí),派生類的相應(yīng)構(gòu)造函數(shù)被自動(dòng)調(diào)用。若派生類沒有構(gòu)造函數(shù)而基類有,則基類必須擁有缺省構(gòu)造函數(shù)。只有這樣,當(dāng)創(chuàng)建派生類的對(duì)象時(shí),才能自動(dòng)執(zhí)行基類的默認(rèn)構(gòu)造函數(shù)。若派生類有構(gòu)造函數(shù),且基類有缺省構(gòu)造函數(shù),則創(chuàng)建派生類的對(duì)彖時(shí),基類的缺省構(gòu)造函數(shù)會(huì)自動(dòng)執(zhí)行,除非當(dāng)前被調(diào)用的派生類構(gòu)造函數(shù)在其初始化段中顯式地調(diào)用了基類的有參構(gòu)造函數(shù)。若派生類和基類都有構(gòu)造函數(shù),但基類沒有缺省構(gòu)造函數(shù),則派生類的每一個(gè)構(gòu)造函數(shù)必須在其初始化列表中顯式地調(diào)用基類的某個(gè)構(gòu)造函數(shù)。只有這樣,當(dāng)創(chuàng)建派生類的對(duì)象時(shí),基類的構(gòu)造函數(shù)才能獲得執(zhí)行機(jī)會(huì)。程序分析題(11,12)(26,29)15,16(26,29)程序設(shè)計(jì)題〃xiti4_l.cpp#iiiclude<iostieam.h>classPoint 〃定義基類{protected:mtx,y;public:Pomt(mtmyx.iiitmyy){x=myx;y=myy;}voiddisplayxyQ{cout?nThepostionofpomt:M;cout?H(M?x?,7r?y?H)n?endl;}};classRectangle:publicPouit 〃定義派生類,公有繼承方式{private:intl、w;public:Rectaiigle(intmyx,iiitmyy.iiitmytintmyw):Pomt(myxjnyy){l=myl;w=myw;}voiddisplaylwQ{cout?HThelengthandwidtliofrectaiigle:M;cout?l?,,;,?w?endl;}};classCube:publicRectangle〃定義派生類,公有繼承方式{private:mth;public:Cube(intmyx,intmyy.mtmyLiiitmyw,intmyh):Rectaiigle(myx,myy,myl4iiyw){h=myh;}voiddisplayhO{cout?nTheheightofcube:H?h?endl;}};voidmain(){Cubev(20.40、3,5,6); //派生類對(duì)象cout?'*Thedataofcube:H?endl;v.displayxyQ;v.displaylwQ;v.displayh();}//第四章例題:4.16#include<iostreain>usingnamespacestd;classpoint{public:point(intmyx.iiitmyy){x=niyx;y=myv;}voiddisplayxy(){cout?Mtliepositionofcenter:'*;cout?li(,,?x?ll,li?H),,?endl;}protected:intx,y;};classciicle:publicpoint{public:ciicle(intmyxjntmyy.mtmvr):pomt(mvxjnyy){i-=myr;}voiddisplayrQ{cout?Htheradiusofcircle:H?r?endl;}private:intr;};classcylind亡匚publiccircle{public:cyluider(iiitmyxjntmyy.mtmvh):ciicle(myx,nyyjnyi){h=myh;}voiddisplayhQ{cout?Htheheightofcyluider:,r?h?endl;}private:inth;};mtmam(){cylinderv(4,5.6,8);cout?Hthedataofcyliiider:,,?endl;v.displavxyO;v.displayr();v.displayh();return0;}第5章習(xí)題答案填空題靜態(tài)動(dòng)態(tài)編譯時(shí)的多態(tài)性,運(yùn)行時(shí)的多態(tài)性。⑶靜態(tài)動(dòng)態(tài)覆蓋使用了不恰當(dāng)?shù)幕⒑瘮?shù)靜態(tài)0抽彖類選擇題(1)A (1)D (2)BD (3)B (4)AB(5)B (6)C (7)CD (8)BD判斷題(l)f⑵f(3)t (4)f (5)f (6)t簡(jiǎn)答題(1)多態(tài)性就是同一符號(hào)或名字在不同情況下具有不同解釋的現(xiàn)象,即是指同一個(gè)函數(shù)的多種形態(tài)。C++支持兩種多態(tài)性,編譯時(shí)的多態(tài)性和運(yùn)行時(shí)的多態(tài)性。多態(tài)性有兩種表現(xiàn)形式:一種是不同的對(duì)象在收到相同的消息時(shí),產(chǎn)生不同的動(dòng)作,這主要通過虛函數(shù)來(lái)實(shí)現(xiàn):另一種是同一對(duì)象收到相同的消息卻產(chǎn)生不同的函數(shù)調(diào)用,這主要通過函數(shù)重載來(lái)實(shí)現(xiàn)。⑵重載函數(shù)只要求函數(shù)有相同的函數(shù)名,并且重載函數(shù)是在相同作用域中定義的名字相同的不同函數(shù)。而虛函數(shù)不僅要求函數(shù)名相同,而且要求函數(shù)的簽名、返回類型也相同。也就是說(shuō)函數(shù)原型必須完全相同,而且虎函數(shù)特性必定是體現(xiàn)在基類和派生類的類層次結(jié)構(gòu)中。重載函數(shù)可以是成員函數(shù)或友員函數(shù),而虛函數(shù)只能是非靜態(tài)成員函數(shù)。構(gòu)造函數(shù)可以重載,析構(gòu)函數(shù)不能重載。正好相反,構(gòu)造函數(shù)不能定義為虛函數(shù),析構(gòu)函數(shù)能定義為虛函數(shù)。重載函數(shù)的調(diào)用是以所傳遞參數(shù)序列的差別作為調(diào)用不同函數(shù)的依據(jù)而虛函數(shù)是根據(jù)對(duì)彖的不同去調(diào)用不同類的虎函數(shù)。重載函數(shù)在編譯時(shí)表現(xiàn)出多態(tài)性,是靜態(tài)聯(lián)編;而虛函數(shù)則在運(yùn)行時(shí)表現(xiàn)出多態(tài)性是動(dòng)態(tài)聯(lián)編,動(dòng)態(tài)聯(lián)編是C++的精髓。⑶包含有純虛函數(shù)的類稱為抽象類。抽象類用來(lái)描述一組子類的共同的操作接|丨,它用作基類,而接11的完成實(shí)現(xiàn)由派生類提供。抽象類的派生類不一定要給出純虛函數(shù)的實(shí)現(xiàn)。如果沒有在派生類中給出純虛函數(shù)的實(shí)現(xiàn)中,則需仍將它說(shuō)明為純虎函數(shù),否則編譯器將給出錯(cuò)誤信息。說(shuō)明了純虛函數(shù)的派生類仍是抽象類。(4)能聲明虛析構(gòu)函數(shù)。如果一個(gè)類的析構(gòu)函數(shù)是虛函數(shù),那么,由它派生而來(lái)的所有子類的析構(gòu)函數(shù)也是虛函數(shù)odelete運(yùn)算符和析構(gòu)函數(shù)一起工作,當(dāng)使用delete刪除一個(gè)對(duì)象時(shí),delete隱含著對(duì)析構(gòu)函數(shù)的一次調(diào)用,如果析構(gòu)函數(shù)為虛函數(shù),則這個(gè)調(diào)用采用動(dòng)態(tài)聯(lián)編。這樣保證了基類類型的指針能夠調(diào)用適當(dāng)?shù)奈鰳?gòu)函數(shù)針對(duì)不同的對(duì)彖進(jìn)行清理工作。程序設(shè)計(jì)題(2)〃xt5_2.cpp〃應(yīng)用實(shí)例#include<iostreain>#include<string>usingnamespacestd;classShape{public:Shape。;voidshow();viitual?Shap亡(){}viitualfloatareaQ=0;virtualstringshapename()=O;protected:stringname;staticiiitcount;};Shape::ShapeQcout?M請(qǐng)輸入”;count=count+l;}voidShape::show(){cout?M第”<vcoum?,,個(gè)圖形是H?shapenameO;cout?M,面積為area()?endl;}floattotal(Shape*s[]jntn){floatsum=0;fbr(inti=0;i<n;i-H-){sum+=s[i]->aiea();deletes[i];}returnsum;}classTiiaiigle:publicShape{public:TnaiigleQ;^Tnangle(){cout?HTriangledestmctofiscalledH?endl;}floatareaQ{returnh*w*0.5;}stimgshapename(){nanie="三角形”;etumname;}protected:floathw;};Triangle::Tnangle(){floatmyWqfloatmyh;coutvv"三角形的底和高:";cin?myw?mvh;w=myw;h=myh;}classRectangle:publicShape{public:RectaiigleQ;^RectaiigleQ{cout?MRectaiigledestmctoriscalledH?endl:}floataiea(){returnl*w;}stimgshapename(){nanie=”矩形”;etumname;}protected:floatLw;};Rectangle::Rectaiigle()floatmyLfloatmyw;coutvv”矩形的長(zhǎng)和寬:”;cin?myl?myw;l=myl;w=myw;}classCiicle:publicShapeprotected:floatradius;public:Circle();-CiicleQ{cout?MCircledestnictoriscalledll?endl;}floatareaQ{returniadius*radius*3.14;}stimgshapename(){name=M1^1M;ieturnname;}};Ciicle::Circle()floatr;cout?"圓的半徑:";cin?r;radius=r;}iiitShape::count=0;mtmam()Shape*s[4];s[0]=newTriangle();s[0]->show();s[l]=newRectangle();s[l]->show();s[2]=newCiicleQ;s[2]->show();s[3]=newCiicleQ;s[3]->show();floatsum=total(s,4);cout?"上述圖形的面積和為:“;cout?sum?endl;return0;}第6章習(xí)題答案

填空題函數(shù)非靜態(tài)成員函數(shù) 友員函數(shù)⑶少(4)對(duì)象的引用⑸整型多選擇題(4)C(4)fE (2)C ⑶(4)C(4)f判斷題t ⑵f (3)t操作題⑵提不:需要聲明如下形式帶默認(rèn)值的構(gòu)造函數(shù):fiaction(intx=O,inty=l);需要定義一個(gè)成員函數(shù)去優(yōu)化分?jǐn)?shù),如化簡(jiǎn)、不讓負(fù)號(hào)在分母處等。參考代碼如下:voidfraction::optinuzation(){mtgcdaiiiiijiiax;if(feiizi=O){//如分子為0,則分母為1后,返回femnu=l;return;}gcd=(abs(feiizi)>abs(femnu)?abs(feiunu):abs(feiizi));if(gcd=O)return;〃以卞用輾轉(zhuǎn)相除法求最人公約數(shù)if(abs(feiizi)>abs(feiiinu)){max=fenzi;inni=feninu;}elseinni=fenzi;max=femnu;}dogcd=max%min;niax=iiun;min=gcd;}wlule(gcd!=0);feiizi-max;femnu/Mnax;if(feiizi<0&&fenmu<0){feiizi=-fenzi;femnu=-femnu;}elseif(feiizi<0&&femnu>0){feiizi=feiizi;femnu=feninu;}elseif(fenzi>0&&femnu>0){fenzi=feiizi;feniiiu=femnu;}if(fenzi>0&&femnu<0){fenzi=-feiizi;femnu=-femnu;}}提示:分?jǐn)?shù)化簡(jiǎn)后再比較。〃第六章例題:6.3#include<iostreain>usingnamespacestd;classcomplex{public:complex(doubler=0.0Jouble1=0.0);complexoperator+(complexc);complexoperator-(complexc);voiddisplay();private:doublelealjniag;};complexcomplex::(double)第7章習(xí)題答案名詞解釋題函數(shù)模板:一個(gè)帶類屬參數(shù)的函數(shù)。類模板:一個(gè)帶類屬參數(shù)的類模板函數(shù):通過參數(shù)實(shí)例化町以再構(gòu)造出具體的函數(shù)。模板類:通過參數(shù)實(shí)例化可以再構(gòu)造出具體的類。填空題(1)函數(shù)模板類模板templateclasstypename類屬參數(shù) 類似⑸沒有類模板順序容器 關(guān)聯(lián)容器隨機(jī)訪問迭代器輸入迭代器 輸出迭代器 前向迭代器雙向迭代器隨機(jī)訪問迭代器⑴⑴A(2)A判斷題(l)t⑵f程序設(shè)計(jì)題AB (4)C (5)ABD⑶t(4)f(5)f(xt7_l.cpp)(xt7_2.cpp)第8章習(xí)題答案填空題流流類標(biāo)準(zhǔn)輸入cincoutcerrclogfstreain.hios類的成員函數(shù) 使用控制符順序文件 隨機(jī)讀寫文件輸入文件流輸出文件流 輸入/輸出文件流一個(gè)指定的文件0readwrite選擇題(1)E⑵A(3)BCD(4)C(5)A(6)C (7)AB (8)AD BC(9)D(10)B(11)A(12)BC(13)C(14)C (15)BCD (16)C判斷題(l)f⑵t(3)t (4)f(5)t(6)f簡(jiǎn)答題⑴從流類庫(kù)的基本結(jié)構(gòu)可以看到,ios類是istieain類和osUeam類的基類,從ios類公有派生istream和ostream兩個(gè)類,而lostream類通過多重繼承istream類和ostream類而產(chǎn)生的。

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論