




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、作業(yè)4一、選擇題1 .下列關于動態(tài)聯(lián)編的描述中,錯誤的是。DA)動態(tài)聯(lián)編是以虛函數(shù)為基礎的B)動態(tài)聯(lián)編是在運行時確定所調(diào)用的函數(shù)代碼的C)動態(tài)聯(lián)編調(diào)用函數(shù)操作是指向?qū)ο蟮闹羔樆驅(qū)ο笠肈)動態(tài)聯(lián)編是在編譯時確定操作函數(shù)的注:先期聯(lián)編也稱靜態(tài)聯(lián)編,遲后聯(lián)編也稱動態(tài)聯(lián)編。2關于虛函數(shù)的描述中,正確的是。DA)虛函數(shù)是一個靜態(tài)成員函數(shù)B)虛函數(shù)是一個非成員函數(shù)C)虛函數(shù)既可以在函數(shù)說明時定義,也可以在函數(shù)實現(xiàn)時定義D)派生類的虛函數(shù)與基類中對應的虛函數(shù)具有相同的參數(shù)個數(shù)和類型注釋:虛函數(shù)是非靜態(tài)的成員函數(shù)。它不能是友元函數(shù),但可以在另一個類中被聲明為友元函數(shù)。虛函數(shù)聲明只能出現(xiàn)在類定義的函數(shù)原型聲明
2、中,而不能在成員函數(shù)的函數(shù)體實現(xiàn)的時候。派生類的虛函數(shù)與基類中對應的虛函數(shù)必須滿足下列條件,否則派生類中的虛函數(shù)將丟失其虛特性,在調(diào)用時進行靜態(tài)聯(lián)編: 派生類中的虛函數(shù)與基類中的虛函數(shù)具有相同的名稱: 派生類中的虛函數(shù)與基類中的虛函數(shù)具有相同的參數(shù)個數(shù)和相同的對應參數(shù)類型: 派生類中的虛函數(shù)與基類中的虛函數(shù)的返回值或者相同,或者都返回指針或引用,并且派生類虛函數(shù)所返回的指針或引用的基類型是基類中的虛函數(shù)所返回的指針或引用的基類型的子類型。3在下面四個選項中,是用來聲明虛函數(shù)的。AA)virtualB)publicC)usingD)false4對虛函數(shù)的調(diào)用。DA)一定使用動態(tài)聯(lián)編B)必須使用動
3、態(tài)聯(lián)編C)一定使用靜態(tài)聯(lián)編D)不一定使用動態(tài)聯(lián)編注釋:參見第1題的注釋。5實現(xiàn)運行時的多態(tài)性要使用。DA)重載函數(shù)B)構造函數(shù)C)析構函數(shù)D)虛函數(shù)注釋:參見第1題的注釋。6要實現(xiàn)動態(tài)聯(lián)編,必須通過調(diào)用虛函數(shù)。AA)對象指針B)成員名限定C)對象名D)派生類名78士7E910111213的14注釋:參見第1題的注釋。在派生類中重新定義虛函數(shù)時,除了方面,其他方面都必須與基類中相應的虛函數(shù)保持一致。DA)參數(shù)個數(shù)B)參數(shù)類型C)函數(shù)名稱D)函數(shù)體注釋:參見第2題的注釋。下面關于構造函數(shù)和析構函數(shù)的描述,錯誤的是_。DA)析構函數(shù)中調(diào)用虛函數(shù)采用靜態(tài)聯(lián)編B)對虛析構函數(shù)的調(diào)用可以采用動態(tài)聯(lián)編C)當
4、基類的析構函數(shù)是虛函數(shù)時,其派生類的析構函數(shù)也一定是虛函數(shù)D)構造函數(shù)可以聲明為虛函數(shù)注釋:構造函數(shù)不能聲明為虛函數(shù),但析構函數(shù)可以聲明為虛函數(shù)。當基類的析構函數(shù)聲明為虛函數(shù)時,無論派生類是否使用virtual關鍵字說明,派生類的析構函數(shù)是虛函數(shù),對缺省析構函數(shù)亦然。而且,如果滿足動態(tài)聯(lián)編的其他條件,對虛析構函數(shù)的調(diào)用將采用動態(tài)聯(lián)編。構造函數(shù)不能聲明為虛函數(shù),但在構造函數(shù)中可以調(diào)用虛函數(shù)。在構造函數(shù)或析構函數(shù)中調(diào)用虛函數(shù),將采用靜態(tài)聯(lián)編。關于純虛函數(shù)和抽象類的描述中,錯誤的是_。CA)純虛函數(shù)是一種特殊的虛函數(shù),它沒有具體的實現(xiàn)B)抽象類是指具有純虛函數(shù)的類C)一個基類中說明有純虛函數(shù),該基類
5、的派生類一定不再是抽象類D)抽象類只能作為基類來使用,其純虛函數(shù)的實現(xiàn)由派生類給出注釋:帶有純虛函數(shù)的類稱為抽象類。抽象類中的純虛函數(shù)的實現(xiàn)由派生類給出:但派生類仍可不給出純虛函數(shù)的定義,繼續(xù)作為抽象類存在。下列描述中,是抽象類白特性。d|A)可以說明虛函數(shù)B)可以進行構造函數(shù)重載C)可以定義友元函數(shù)D)不能說明其對象注釋:抽象類區(qū)別于其他類的最根本的特征是不能定義對象。是一個在基類中說明的虛函數(shù),它在該基類中沒有定義,但要求任何派生類都必須定義自己的版本。CA)虛析構函數(shù)B)虛構造函數(shù)C)純虛函數(shù)D)靜態(tài)成員函數(shù)如果一個類至少有一個純虛函數(shù),那么就稱該類為_。AA)抽象類B)虛基類C)派生類
6、D)以上都不對以下成員函數(shù)表示Z虛函數(shù)。CA)virtualintvf(int);B)voidvf(int)=0C)virtualvoidvf()=0;D)virtualvoidvf(int)()函數(shù)的函數(shù)體為空:前者所在的類是抽象類,不能直接進行實例化,而后者所在類是可以實例化的:卜面的描述中,正確的是。AA)virtual可以用來聲明虛函數(shù)B)含有純虛函數(shù)的類是不可以用來創(chuàng)建對象的,因為它是虛基類C)即使基類的構造函數(shù)沒有參數(shù),派生類也必須建立構造函數(shù)D)靜態(tài)數(shù)據(jù)成員可以通過成員初始化列表來初始化注釋:virtual關鍵字既可以用來聲明虛基類,也可以用來聲明虛函數(shù)。含有純虛函數(shù)的類是抽象類
7、,它不能用來定義對象。靜態(tài)數(shù)據(jù)成員的初始化必須在類體外進行。如果所有的基類和子對象構造函數(shù)都不需要參數(shù),派生類也不需要參數(shù)時,派生類構造函數(shù)可以不定義。15在下面程序中,A、B、C、D四句編譯時不會出現(xiàn)錯誤的是_。A#include<>classBasepublic:Base()Base(intc):count(c)virtualvoidprint()const=0;private:intcount;classDerived:publicBasepublic:Derived。:Base(0)Derived(intc):Base(c)voidprint()constcout<&
8、lt;"Derived"<<endl;voidmain()Derivedd(10);Base*pb;pb=&d;Derive2'sPrint()called.根據(jù)結果將程序補充完整。#include<>classBasepublic:Base(inti)b=i;CDvirtualvoidPrint()=0;protected:intb;classDerivel:publicBasepublic:Derive1(inti):Base(i)voidPrint()cout<<"Derivel'sPrint()c
9、alled.”<<endl;;classDerive2:publicBase_public:Derive1(inti):Base(i)voidPrint()cout<<"Derive2'sPrint()called."<<endl;voidfun(Base*obj_)obj->Print();voidmain()_Derive1*d1=newDerive1(1);_Derive2*d2=newDerive2(2);fun(dl);fun(d2);注釋:派生類Derived1和Derived2從基類Base公有繼承,它們是Ba
10、se的子類型。主程序中兩次調(diào)用fun函數(shù),該函數(shù)通過指針對象obj調(diào)用了Print函數(shù),得到了不同的輸出結果。而同樣的消息被不同類型的對象接收時導致完全不同的行為,恰好體現(xiàn)了面向?qū)ο蟮亩鄳B(tài)特性。根據(jù)運行時的多態(tài)必須滿足的條件,Print函數(shù)一定是一個虛函數(shù),并且在所有類中都必須進行定義。由于Base類中的Print函數(shù)除了提供一個公共的接口外,沒有其他的作用,所以最好定義為純虛函數(shù)。12將下列程序補充完整。#include<>classconvertpublic:convert(doublei)vail=i;_CDvirtualvoidcompute()=0;protected:d
11、oubleval1;doubleval2;<<endl;<<endl;;voidfun(_convert&f_)();voidmain()l_to_glgobj(4);f_to_cfcobj(70);fun(lgobj);fun(fcobj);13根據(jù)不同的輸出結果,在函數(shù)Tone中填入正確的語句。#include<>classInstrumentpublic:virtualvoidPrint()constcout<<"Instrument:Print"<<endl;classPiano:publicIns
12、trumentpublic:voidPrint()constcout<<"Piano:Print"<<endl;classGuitar:publicInstrumentpublic:voidPrint()constcout<<"Guitar:Print"<<endl;voidTone()voidmain()Guitarg;Tone(g);Pianop;Tone(p);(1)輸出結果為:Instrument:PrintInstmment:Print(2)輸出結果為:Guitar:PrintPiano:Prin
13、t(1) Instrumentobj()(2) Instrument&obj()參考第3題,第一次的輸出是由靜態(tài)聯(lián)編產(chǎn)生的,第二次的輸出是由動態(tài)態(tài)聯(lián)編產(chǎn)生14下列程序的運行結果如下:Base'scons.Derived'scons.Derived'sdes.Base'sdes.根據(jù)結果將程序補充完整。#include<>classBasepublic:Base()cout<<"Base'scons."<<endl;_virtualBase()_cout<<"Base
14、39;sdes."<<endl;classDerived:publicBasepublic:Derived()cout<<"Derived'scons."<<endl;Derived()cout<<"Derived'sdes."<<endl;voidmain()Base*ptr=newDeriveddeleteptr;三、編程1.在作業(yè)1編程1的Point類中完成賦值運算符=、插入運算符<<、比較運算符=、!=和加法運算符+、-的重載。#include<
15、;>#include<>classPointpublic:Point(floatx=0,floaty=0,floatz=0):x_(x),y_(y),z_(z)Point(constPoint&p):x_,y_,z_3A6A9C11C12A13C14A15A16C2“<<endl;Base*objDerive1*d1=newDerive1(1);_Derive2*d2=newDerive2(2);11virtualvoidcompute()=0;l_to_g(doublei):convert(i)public:f_to_c(doublei):convert
16、(i)voidcompute()val2=(val1-32)*5/9;cout<<val1<<”Fahrenheitis“<<val2<<”Celsius.”<<endl;convert&f13Instrumentobj()(2)Instrument&obj()14virtualBase()newDerived三、編程1,#include<>#include<>classPointpublic:Point(floatx=0,floaty=0,floatz=0):x_(x),y_(y),z_(z)
17、Point(constPoint&p):x_,y_,z_voidnegate()x_*=-1;y_*=-1;z_*=-1;doublenorm()returnsqrt(x_*x_+y_*y_+z_*z_);voidprint()cout<<'('<<x_<<","<<y_<<","<<z_<<")"Point&operator=(constPoint&point);boolPoint:operator=(cons
18、tPoint&point)constreturnx_=&&y_=&&z_=;boolPoint:operator!=(constPoint&point)constreturnx_!=|y_!=|z_!=;friendPointoperator+(constPoint&p1,constPoint&p2);friendPointoperator-(constPoint&p1,constPoint&p2);friendostream&operator<<(ostream&ostr,constP
19、oint&point);private:floatx_,y_,z_;Pointoperator+(constPoint&p1,constPoint&p2)returnPoint+,+,+;Pointoperator-(constPoint&p1,constPoint&p2)returnPoint&operator<<(ostream&ostr,constPoint&point)returnostr<<"("<<<<","<<<
20、<","<<<<")"Point&Point:operator=(constPoint&point)x_=;y_=;z_=;return*this;voidmain()Pointp(12,-3,4),q(14,5,12),r1,r2;r1=p+q;cout<<r1<<()<<endl;r2=p-q+r1;cout<<r2<<()<<endl;if(r1=r2)cout<<"r1=r2"<<end
21、l;elsecout<<"r1!=r2"<<endl;2,#include<>#include<>classPointpublic:Point(intx=0,inty=0,intz=0):x_(x),y_(y),z_(z)Point(constPoint&p):x_,y_,z_Point&operator+()x_+;y_+;z_+;return*this;Pointoperator+(int)Pointtemp(*this);x_+;y_+;z_+;returntemp;Point&operator-
22、()x_-;y_-;z_-;return*this;Pointoperator-(int)Pointtemp(*this);x_-;y_-;z_-;returntemp;voidprint()cout<<'('<<x_<<","<<y_<<","<<z_<<")"private:intx_,y_,z_;voidmain()Pointp(12,-3,4);cout<<"p="();Pointq(p+);co
23、ut<<"q="();cout<<"p="();+(+p);cout<<"p="();p-;cout<<"p="();3,#include<>classShapepublic:/Shape()/Shape()virtualfloatGetArea()return-1;classCircle:publicShapepublic:Circle(floatradius):itsRadius(radius)/Circle()floatGetArea()return
24、*itsRadius*itsRadius;private:floatitsRadius;classRectangle:publicShapepublic:Rectangle(floatlen,floatwidth):itsLength(len),itsWidth(width);/Rectangle();floatGetArea()returnitsLength*itsWidth;floatGetLength()returnitsLength;floatGetWidth()returnitsWidth;private:floatitsWidth;floatitsLength;classSquar
25、e:publicRectanglepublic:Square(floatlen);/Square();Square:Square(floatlen):Rectangle(len,len)voidmain()Shape*sp;sp=newCircle(5);cout<<"TheareaoftheCircleis"<<sp->GetArea()<<endl;deletesp;sp=newRectangle(4,6);cout<<"TheareaoftheRectangleis"<<sp->GetArea()<<endl;deletesp;sp=newSquare(5);cout<<"TheareaoftheSquareis"<<sp->GetArea()<<endl;deletesp;4,#include<>classShapepublic:/Shape()/Shape()virtualfloatGetArea()=0;virtualfloatGetPerim()=0;classCircle:publicShapepublic:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司文體活動月策劃方案
- 公司著裝大賽策劃方案
- 公司新年嘉年華活動方案
- 2025年職業(yè)健康安全管理師考試試卷及答案
- 2025年新能源與可再生能源知識考核考試卷及答案
- 2025年數(shù)字信號處理技術考試卷及答案
- 2025年天文學與空間科學考試題及答案
- 2025年人機交互設計師職業(yè)資格考試試題及答案
- 2025年企業(yè)管理咨詢師職業(yè)資格考試試卷及答案
- 2025年交通工程與智能交通管理的專業(yè)知識考試試卷及答案
- 國開《學前兒童語言教育活動指導》形考1-4試題及答案
- ???023綜合安防工程師認證試題答案HCA
- 濁度儀使用說明書
- GB/T 14404-2011剪板機精度
- GB/T 14294-1993組合式空調(diào)機組
- GA 1517-2018金銀珠寶營業(yè)場所安全防范要求
- 提高痰留取成功率PDCA課件
- 組合導航與融合導航解析課件
- 伊金霍洛旗事業(yè)編招聘考試《行測》歷年真題匯總及答案解析精選V
- 深基坑支護工程驗收表
- 顱腦CT影像課件
評論
0/150
提交評論