【第四版課后習(xí)題答案】第04章類_第1頁
【第四版課后習(xí)題答案】第04章類_第2頁
【第四版課后習(xí)題答案】第04章類_第3頁
【第四版課后習(xí)題答案】第04章類_第4頁
【第四版課后習(xí)題答案】第04章類_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第四章 類4-1解釋public和private的作用,公有類型成員與私有類型成員有些什么區(qū)別?解:公有類型成員用public關(guān)鍵字聲明,公有類型定義了類的外部接II;私有類型的成員用private關(guān)鍵字聲明,只允許本類的函數(shù)成員來訪問,而類外部的任何訪問都是非法的,這樣,私有的成員就整個隱蔽在類中,在類的外部根本就無法看到,實現(xiàn)了訪問權(quán)限的有效控制。4~2protected關(guān)鍵字有何作用?解:protected用來聲明保護類型的成員,保護類型的性質(zhì)和私有類型的性質(zhì)相似,其差別在于繼承和派生時派生類的成員函數(shù)可以訪問基類的保護成員。4-3構(gòu)造函數(shù)和析構(gòu)函數(shù)有什么作用?解:構(gòu)造函數(shù)的作用就是在對象被創(chuàng)建時利用特定的值構(gòu)造對象,將對象初始化為一個特定的狀態(tài),使此對象具有區(qū)別于彼對象的特征,完成的就是是一個從一般到具體的過程,構(gòu)造函數(shù)在對象創(chuàng)建的時候由系統(tǒng)自動調(diào)用。析構(gòu)函數(shù)與構(gòu)造函數(shù)的作用幾乎正好相反,它是用來完成對象被刪除前的一些清理工作,也就是專門作掃尾工作的。一般情況下,析構(gòu)函數(shù)是在對象的生存期即將結(jié)束的時刻由系統(tǒng)自動調(diào)用的,它的調(diào)用完成之后,對象也就消失了,相應(yīng)的內(nèi)存空間也被釋放。4-4數(shù)據(jù)成員可以為公有的嗎?成員函數(shù)可以為私有的嗎?解:可以,二者都是合法的。數(shù)據(jù)成員和成員函數(shù)都可以為公有或私有的。但數(shù)據(jù)成員最好定義為私有的。4-5已知classA中有數(shù)據(jù)成員inta,如果定義了A的兩個對象Al、A2,它們各自的數(shù)據(jù)成員a的值可以不同嗎?解:可以,類的每一個對象都有自己的數(shù)據(jù)成員。4-6什么叫做拷貝構(gòu)造函數(shù)?拷貝構(gòu)造函數(shù)何時被調(diào)用?解:拷貝構(gòu)造函數(shù)是一種特殊的構(gòu)造函數(shù),具有一般構(gòu)造函數(shù)的所有特性,其形參是本類的對象的引用,其作用是使用一個己經(jīng)存在的對象,去初始化一個新的同類的對象。在以下三種情況下會被調(diào)用:在當(dāng)用類的一個對象去初始化該類的另一個對象時;如果函數(shù)的形參是類對象,調(diào)用函數(shù)進行形參和實參結(jié)合時;如果函數(shù)的返回值是類對象,函數(shù)調(diào)用完成返回時;4-7拷貝構(gòu)造函數(shù)與賦值運算符仁)有何不同?解:賦值運算符仁)作用于一個已存在的對象:而拷貝構(gòu)造函數(shù)會創(chuàng)建一個新的對象。4-8定義一個Dog類,包含的age、weight等屬性,以及對這些屬性操作的方法。實現(xiàn)并測試這個類。解:源程序:#include<iostream.h>classDog{public:Dog(intinitialAge=0,intinitialWeight=5);~Dog();intGetAge0{returnitsAge;}//inline!voidSetAge(intage){itsAge=age;}//inline!intGetWeight0{returnitsWeight;}//inline!voidSetWeight(intweight){itsAge=weight;}//inline!private:intitsAge,itsWeight;);Dog::Dog(intinitialAinitialWeight)itsAge=initialAge;itsWeight=initialWeight;)Dog::^Dog()//destructor?takesnoaction{)intmainO{DogJack(2,10);cout?”JackisaDogwhois”;cout?Jack.GetAge0?"yearsoldand”;cout?Jack.GetWeight()?〃poundsweight.\n";Jack.SetAge(7);Jack.SetWeight(20);cout?”NowJackis”;cout?Jack.GetAge0?"yearsoldand”;cout?Jack.GetWeight()?〃poundsweight.〃;return0;)程序運行輸出:JackisaDogwhois2yearsoldand10poundsweight.NowJackis7yearsold20poundsweight.4-9設(shè)計并測試一個名為Rectangle的矩形類,其屬性為矩形的左下角與右上角兩個點的坐標(biāo),能計算矩形的面積。解:源程序:#include〈iostream.h>classRectangle{public:Rectangle(inttop,intleft,intbottom,intright);'Rectangle0{}intGetTopOconst{returnitsTop;}intGetLeft0const{returnitsLeft;}intGetBottom0const{returnitsBottom;}intGetRight0const{returnitsRight;}voidSetTop(inttop){itsTop=top;}voidSetLeft(intleft){itsLeft=left;}voidSetBottom(intbottom){itsBottom=bottom;}voidSetRight(intright){itsRight=right;}intGetArea()const;private:intitsTop;intitsLeft;intitsBottom;intitsRight;);Rectangle::Rectangle(inttop,intleft,intbottom,intright){itsTop=top;itsLeft=left;itsBottom=bottom;itsRight=right;)intRectangle::GetArea()const{intWidth=itsRight-itsLeft;intHeight=itsTop-itsBottom;return(Width*Height);)intmainO{RectangleMyRectangle(100,20,50,80);intArea=MyRectangle.GetAreaO;cout?"Area:〃<<Area?return0;)程序運行輸出:Area:3000UpperLeftXCoordinate:204-10設(shè)計一個用于人事管理的People(人員)類??紤]到通用性,這里只抽象出所有類型人員都具有的屬性:number(編號)、sex(性別)、birthday(出生口期)、id(身份證號)等等。其中〃出生口期〃定義為一個〃口期〃類內(nèi)嵌子對象。用成員函數(shù)實現(xiàn)對人員信息的錄入和顯示。要求包括:構(gòu)造函數(shù)和析構(gòu)函數(shù)、拷貝構(gòu)造函數(shù)、內(nèi)聯(lián)成員函數(shù)、帶缺省形參值的成員函數(shù)、聚集。解:本題用作實驗四的選做題,因此不給出答案。4-11定義一個矩形類,有長、寬兩個屬性,有成員函數(shù)計算矩形的面積解:#include〈iostream.h>classRectangle{public:Rectangle(floatlen,floatwidth){Length=len;Width=width;)'Rectangle。{};floatGetArea0{returnLength*Width;}floatGetLengthO{returnLength;}floatGetWidthO{returnWidth;}private:floatLength;floatWidth;);voidmainO{floatlength,width;cout<<〃請輸入矩形的長度:〃;cin>>length;cout<<〃請輸入矩形的寬度:〃;cin>>width;Rectangler(length,width);cout 〃長為"<<length<<"寬為"?width?〃的矩形的面枳為:"<<r.GetArea0?endl;)程序運行輸出:請輸入矩形的長度:5請輸入矩形的寬度:4長為5寬為4的矩形的面積為:20/*4-11-2已有點類Point定義,定義一個矩形類,有左下角,右上角兩個點,面積,周長屬性,面積,周長由左下角,右上角兩個點決定;有成員函數(shù)有(1)構(gòu)造函數(shù)(2)返回矩形的面積(3)返回周長(提示:用類組合實現(xiàn))解:*/#mchide<iostream.h>classPoint(public:Point(intxx=0,intyy=0){X=xx;Y=yy;}〃構(gòu)造函數(shù)Point(Point&p);mtGetX(){fetuniX;}mtGetY(){letuinY;}private:mtX,Y;};Point二Point(Point&p){x=p.x;Y=p.Y;//cout?',w貝構(gòu)造函數(shù)被調(diào)用“Wendi;)classRectangle{public:Rectangle(Pointxpl,Pomtxp2);〃構(gòu)造函數(shù)Rectangle(Rectangle&);〃拷貝構(gòu)造函數(shù)floatgetarea(){returnarea;}floatgetlen(){ienunlen;}private:Pointpl,p2;floataieajen;};Rectangle二Rectangle(Pointxpl,Pointxp2):p1(xp1),p2(xp2){floatli=p2.GetY()-pl.GetY();floatw=p2.GetX()-pl.GetX();area=h*w;len=2*(h+w);)Rectangle::Rectangle(Rectaiigle&Rect):pl(Rect.pl),p2(Rect.p2){aiea=Rect.aiea;len=Rect.len;)voidmam()(mtx,y;cout<v”請輸入矩形的左下角點坐標(biāo)pl的xy坐標(biāo):”;cin?x?y;Pointmyp1(x,y);cout?”請輸入矩形的右衛(wèi)轉(zhuǎn)點坐標(biāo)p2的xy坐標(biāo):”;cin?x?y;Pointmyp2(x,y);RectangleRecti(mypmyp2);RectangleRect2(Rectl);cout?”第一個矩形的面積為:"wRecti.getaiea()?"周長為:"Recti.getlen()?endl;cout?”第二個矩形的面積為:"wRect2.getarea()?”周長為:u?Rect2.getlen()?endl;)4-12定義一個〃數(shù)據(jù)類型〃datatype類,能處理包含字符型、整型、浮點型三種類型的數(shù)據(jù),給出其構(gòu)造函數(shù)。解:#include<iostream.h>classdatatype(enum{character,integer,floating-point}vartype;union{charc;inti;floatf;);public:datatype(charch){vartype=character;c=ch;)datatype(intii){vartype=integer;? ??1=Ii;)datatype(floatff){vartype=floating-point;f=ff;)voidprint(););voiddatatype::print0{switch(vartype){casecharacter:cout<<“字符型:"<<c<<endl;break;caseinteger:cout "整型:"<<i<<endl;break;casefloating-point:cout<<“浮點型:"<<f<<endl;break;))voidmainO{datatypeA('c'),B(12),C(l.44F);A.print0;print0;print0;)程序運行輸出:字符型:c整型:12浮點型:1.444-13定義一個Circle類,有數(shù)據(jù)成員半徑Radius,成員函數(shù)GetAreaO,計算圓的面積,構(gòu)造一個Circle的對象進行測試。解:#include〈iostream.h>classCircle{public:Circle(floatradius){Radius=radius;}"Circle0{}floatGetAreaO{return3.14

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論