C++考試試題重點_第1頁
C++考試試題重點_第2頁
C++考試試題重點_第3頁
C++考試試題重點_第4頁
C++考試試題重點_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、一、概念題1類和對象有什么區(qū)別和聯(lián)系? 類是一種復(fù)雜的數(shù)據(jù)類型,它是將不同類型的數(shù)據(jù)和與這些數(shù)據(jù)相關(guān)的操作封裝在一起的集合體。類是對某一類對象的抽象,而對象是某一種類的實例。2 什么是類的實現(xiàn)? 將類所有未編寫函數(shù)體的成員函數(shù)在類體外全部編寫出來。3 this指針的概念是什么? 類中所有的成員函數(shù)(靜態(tài)成員函數(shù)除外)都隱含了第一個參數(shù),這個隱含的第一個參數(shù)就是this指針,在成員函數(shù)的實現(xiàn)代碼中,所有涉及對類的數(shù)據(jù)成員的操作都隱含為對this指針?biāo)笇ο蟮牟僮鳌? 為什么要引入構(gòu)造函數(shù)和析構(gòu)函數(shù)? 構(gòu)造函數(shù)的作用是為類對象的數(shù)據(jù)成員賦初值,構(gòu)造函數(shù)在定義類對象時由系統(tǒng)自動調(diào)用;在一個對象死亡或

2、者說退出生存期時,系統(tǒng)會自動調(diào)用析構(gòu)函數(shù),因此可以在析構(gòu)函數(shù)定義中,設(shè)置語句釋放該對象所占用的一些資源。5 什么時候需要自定義拷貝構(gòu)造函數(shù)?若程序員沒有定義拷貝構(gòu)造函數(shù),則編譯器自動生成一個缺省的拷貝構(gòu)造函數(shù),它可能會產(chǎn)生什么問題? 當(dāng)有用一個已經(jīng)存在對象創(chuàng)建一個同類型的新對象的需求時。當(dāng)對象含有指針數(shù)據(jù)成員,并用它初始化同類型的另一個對象時,默認的拷貝構(gòu)造函數(shù)只能將該對象的數(shù)據(jù)成員復(fù)制給另一個對象,而不能將該對象中指針?biāo)赶虻膬?nèi)存單元也復(fù)制過去。這樣,就可能出現(xiàn)同一內(nèi)存單元釋放兩次,導(dǎo)致程序運行出錯。6 什么是堆對象?創(chuàng)建和回收堆對象的方法是什么? 堆區(qū)用來存放在程序運行期間,根據(jù)需要隨時建

3、立的變量(對象),建立在堆區(qū)的對象稱為堆對象,當(dāng)堆對象不再使用時,應(yīng)予以刪除,回收所占用的動態(tài)內(nèi)存。創(chuàng)建和回收堆對象的方法是使用new和delete運算符。7 為什么需要靜態(tài)數(shù)據(jù)成員?靜態(tài)數(shù)據(jù)成員的定義和初始化方法是什么? 定義靜態(tài)數(shù)據(jù)成員是為了同一個類的不同對象之間共享公共數(shù)據(jù)成員;用關(guān)鍵字static可以把數(shù)據(jù)成員定義成靜態(tài)數(shù)據(jù)成員;在定義的類被使用前,要對其中的靜態(tài)數(shù)據(jù)成員進行初始化,初始化時不必添加關(guān)鍵字static。8 什么是靜態(tài)成員函數(shù)?靜態(tài)成員函數(shù)和非靜態(tài)成員函數(shù)有什么區(qū)別? 用關(guān)鍵字static可以把這成員函數(shù)定義成靜態(tài)成員函數(shù)。 靜態(tài)成員函數(shù)只能訪問類的靜態(tài)數(shù)據(jù)成員,不能訪問

4、類的非靜態(tài)數(shù)據(jù)成員。因為靜態(tài)成員函數(shù)是類的成員,不涉及具體的對象,訪問靜態(tài)成員函數(shù)常用類名引導(dǎo)。 非靜態(tài)成員函數(shù)可以訪問類的靜態(tài)數(shù)據(jù)成員,也可以訪問非靜態(tài)數(shù)據(jù)成員。因為類的靜態(tài)成員總是存在的。 靜態(tài)成員函數(shù)和非靜態(tài)成員函數(shù),最主要的差別是非靜態(tài)成員函數(shù)隱含了第一個參數(shù)this指針,靜態(tài)成員函數(shù)不含this指針。9 結(jié)構(gòu)struct和類class有什么異同? struct和class都可以定義類,但是缺省訪問權(quán)限說明時,struct的成員是公有的,而class的成員是私有的。在C+中,struct可被class代替。10 比較類的三種繼承方式public、protected、private之間的

5、區(qū)別。 采用public公有派生,基類成員的訪問權(quán)限在派生類中保持不變,即基類所有的公有或保護成員在派生類中仍為公有或保護成員。public派生最常用,可以在派生類的成員函數(shù)中訪問基類的非私有成員,可通過派生類的對象直接訪問基類的公有成員。采用private私有派生,基類所有的公有和保護成員在派生類中都成為私有成員,只允許在派生類的成員函數(shù)中訪問基類的非私有成員。private派生很少使用。采用protected保護派生,基類所有的公有和保護成員在派生類中都成為保護成員,只允許在派生類的成員函數(shù)和該派生類的派生類的成員函數(shù)中訪問基類的非私有成員。11 派生類構(gòu)造函數(shù)和析構(gòu)函數(shù)執(zhí)行的次序是怎樣的

6、? 派生類構(gòu)造函數(shù)的執(zhí)行次序:首先,調(diào)用基類構(gòu)造函數(shù),調(diào)用順序按照它們被繼承時聲明的基類名順序執(zhí)行;其次,調(diào)用內(nèi)嵌對象構(gòu)造函數(shù),調(diào)用次序為各個對象在派生類內(nèi)聲明的順序;最后,執(zhí)行派生類構(gòu)造函數(shù)體中的內(nèi)容。派生類析構(gòu)函數(shù)執(zhí)行過程與構(gòu)造函數(shù)執(zhí)行過程相反。即當(dāng)派生類對象的生存期結(jié)束時,首先調(diào)用派生類的析構(gòu)函數(shù),然后調(diào)用內(nèi)嵌對象的析構(gòu)函數(shù),再調(diào)用基類的析構(gòu)函數(shù)。12 什么叫虛基類?有什么作用? 在多重繼承中,如果多條繼承路徑上有一個公共的基類,則在這些路徑的匯合點上的派生類會產(chǎn)生來自不同路徑的公共基類的多個拷貝,如果用virtual把公共基類定義成虛基類,則只會保留公共基類的一個拷貝。引進虛基類的目的

7、是為了解決二義性問題,使得公共基類在它的派生類對象中只產(chǎn)生一個基類子對象。13 什么是多態(tài)性,在C+中是如何實現(xiàn)多態(tài)的?多態(tài)是指同樣的消息被不同類型的對象接收時導(dǎo)致完全不同的行為,是對類的特定成員函數(shù)的再抽象。C+支持的多態(tài)有多種類型,重載(包括函數(shù)重載和運算符重載)和虛函數(shù)是其中主要的方式。14 什么是抽象類,其有何作用?抽象類的派生類是否一定要給出純虛函數(shù)的實現(xiàn)?含有純虛函數(shù)的類稱為抽象類。抽象類的主要作用是通過它為一個類族建立一個公共的接口,使它們能夠更有效地發(fā)揮多態(tài)特性。抽象類聲明了一組派生類共同操作接口的通用語義,而接口的完整實現(xiàn),即純虛函數(shù)的函數(shù)體,要由派生類自己給出,抽象類只能作

8、為基類被繼承使用。抽象類的派生類不一定要給出純虛函數(shù)的實現(xiàn),沒有給出純虛函數(shù)的實現(xiàn)的派生類仍然還是抽象類。15 在C+中能否聲明虛構(gòu)造函數(shù),為什么?能否聲明虛析構(gòu)函數(shù),有什么作用?在C+中不能聲明虛構(gòu)造函數(shù)。多態(tài)是不同的對象對同一消息有不同的行為特性,虛函數(shù)作為運行過程中多態(tài)的基礎(chǔ),主要是針對對象的,而構(gòu)造函數(shù)是在對象產(chǎn)生之前運行的,因此虛構(gòu)造函數(shù)是沒有童義的。在C+中可以聲明虛析構(gòu)函數(shù)。析構(gòu)函數(shù)的功能是在該類對象消亡之前進行一些必要的清理工作,如果一個類的析構(gòu)函數(shù)是虛函數(shù),那么,由它派生而來的所有子類的析構(gòu)函數(shù)也是虛函數(shù)。析構(gòu)函數(shù)設(shè)置為虛函數(shù)之后,在使用指針引用時可以動態(tài)聯(lián)編,實現(xiàn)運行時的多

9、態(tài),保證使用基類的指針就能夠調(diào)用適當(dāng)?shù)奈鰳?gòu)函數(shù)對不同的對象進行清理工作。二、填空題1拷貝構(gòu)造函數(shù)使用_作為參數(shù)初始化創(chuàng)建中的對象。2在C+中,對于構(gòu)造函數(shù)和析構(gòu)函數(shù)來說,_是可以重載的,而_是不可以重載的。3B類中包含一個A類的成員a,則生成B類的對象時構(gòu)造函數(shù)的調(diào)用順序為_。4類的每一個成員函數(shù)(靜態(tài)成員函數(shù)除外)都有一個隱含的參數(shù),叫做_。假設(shè)類名為A,則該參數(shù)的類型為_。5類的靜態(tài)成員分為_和_。6聲明友元的關(guān)鍵字是_。7如果類A繼承了B,則類A稱為_,類B稱為_。8派生類對基類的繼承有三種方式:_、_和_。9如果只想保留公共基類的一個拷貝,就必須使用關(guān)鍵字_把這個公共基類定義為虛基類。

10、10派生類的成員有兩種來源,即_和_。11要想訪問基類的private成員變量,只能通過基類提供的_進行間接訪問。12.重載運算符應(yīng)仍保持其原有的操作數(shù)個數(shù)、結(jié)合性和_。13.對于雙目運算符,若重載為類的成員函數(shù),有_個參數(shù);若重載為友元函數(shù),則有_個參數(shù)。14.后綴"+"重載為類的成員函數(shù)(設(shè)類名為A)的形式為_,重載為類的友元函數(shù)(設(shè)類名為A)的形式為_。15.設(shè)有一時間類Time,現(xiàn)欲用成員函數(shù)方法重載運算符+,實現(xiàn)一個時間與一個整數(shù)的相加運算,所得結(jié)果為一個新時間,則成員函數(shù)的聲明語句為_。16C+語言支持的兩種多態(tài)性分別是編譯時的多態(tài)性和_的多態(tài)性。17聯(lián)編有兩種

11、方式,即_和_。18抽象類必須至少包含一個_。21Windows系統(tǒng)中消息的主要類型有_、_和_。22當(dāng)用戶在窗口中按下鼠標(biāo)左鍵時,Windows系統(tǒng)就會自動發(fā)送_消息給該窗口,如果程序要對此消息作出反應(yīng),則程序中應(yīng)包含類似_函數(shù)。23OnDraw()函數(shù)有一個指向_類的指針參數(shù),通過該參數(shù)可以直接向視圖輸出。24應(yīng)用程序?qū)⑷魏螙|西畫到設(shè)備中之前,必須明確索取一個_。25對話框分為_和_兩種。26對話框的初始化工作一般在_和_中完成。27MFC中公用對話框有_、_、_、_和_。28視圖派生類可以選擇_類作其基類,可以實現(xiàn)文本編輯功能。29對于文檔類,數(shù)據(jù)成員的初始化工作是在_函數(shù)中完成的。30

12、.如果修改了文檔類中的數(shù)據(jù),并要求重新顯示,要用_或_發(fā)出重畫消息,引起對OnDraw()的調(diào)用。31.當(dāng)執(zhí)行cout語句輸出endl數(shù)據(jù)項時,將使C+顯示輸出屏幕上的光標(biāo)從當(dāng)前位置移動到_的開始位置。32.假定x和y為整型,其值分別為16和5,則a/y和double(x)/y的值分別為_ 和 _。33.strlen(“apple”)的值為_。34.C+程序運行時的內(nèi)在空間可以分為全局數(shù)據(jù)區(qū),堆區(qū),棧區(qū)和_區(qū)。35.假定a是一個一維指針數(shù)組,則a+i所指對象的地址比a大_字節(jié)。36.如果一個派生類只有一個唯一的基類,則這樣的繼承稱為_。37.假定AA是一個類,“AA * abc()const;

13、”是該類中的一個成員函數(shù)的原型,在該函數(shù)體中_向*this或其成員賦值。38.假定用戶沒有給一個名為AB的類定義構(gòu)造函數(shù),則系統(tǒng)為其定義的構(gòu)造函數(shù)為_。39.假定用戶為類AB定義了一個構(gòu)造函數(shù)“AB(int aa)a=aa;”,該構(gòu)造函數(shù)實現(xiàn)對數(shù)據(jù)_的初始化。40.作為類的成員函數(shù)重載地個運算符時,參數(shù)表中只有一個參數(shù),說明該運算符有_個操作數(shù)。41.C+有兩種聯(lián)編方式,其中在程序編譯時的聯(lián)編叫做_聯(lián)編42.虛函數(shù)可以是另一類的_函數(shù)43.定義虛函數(shù)需要用_關(guān)鍵字44.將函數(shù)“void vf()”定義為純虛數(shù)的格式是virtual void vf()_45.擁有純虛函數(shù)的類就是_,該類不能產(chǎn)生

14、類的實例46.派生類沒有重載基類的純虛函數(shù),則此派生類也是_47.有如下程序#include <iostream.h>class CSAI_A public:virtual void fun()cout<<"A"class CSAI_B:public CSAI_A public:virtual void fun()CSAI_A:fun();cout<<"B"void main()CSAI_A *p=new CSAI_B;p->fun();delete p;執(zhí)行這個程序的輸出結(jié)果是()答案:_48. 有如下程序#i

15、nclude<iostream.h> const int T=8; void main() int i,s=0; for(i=1;i<=T;i+) s+=i*i; cout<<s<<' ' cout<<endl; 運行結(jié)果:_49. 有如下程序int ff(int x,int y) int z; cout<<x<<'+'<<y<<'=' cin>>z; if(x+y=z) return 1;else return 0; 函數(shù)功能:_5

16、0. 有如下程序char *f(char *s) int n=strlen(s); char * r=new charn+1; for(int i=0;i<n;i+) if(si>='a' && si<='z')ri=si-'a'+'A' else ri=si; rn='0' return r; 函數(shù)功能:_51.C+虛函數(shù)有兩種調(diào)用方式,分別是_和多態(tài)調(diào)用方式52.當(dāng)運算符重載為成員函數(shù)時,對象本身就是_,不在參數(shù)表中顯示地出現(xiàn)。53.若以成員函數(shù)形式,為類CSAI重載“doub

17、le”運算符,則該運算符重載函數(shù)的原則是_54.在表達式“x+=y”中,“+=”是作為非成員函數(shù)重載的運算符,若是使用顯式的函數(shù)調(diào)用代替直接使用運算符“+=”,這個表達式還可以表示為_55.將運算符“>>”重載為類CSAI的友元函數(shù)的格式是:friend instream& operator >>_56.this指針_破壞類的封裝性。57.通過指向基類的指針調(diào)用派生類對象的函數(shù)時,采用_調(diào)用。58.下面是對按從小到大排列的有序數(shù)組an中進行二分查找x的算法,若查找成功返回該元素的下標(biāo),否則返回-1。int BinnarySearch(int a,int n,in

18、t x) int low=0,high=n-1;/定義并初始化區(qū)間下界和上界變量 int mid; /定義保存中點元素下標(biāo)的變量 while(low<=high) mid=(low+high)/2; if(x=amid) _ else if(x<amid)high=mid-1; else _ return -1;59.請補充完整如下的類定義: #include<string.h> class A char *a;public: A()a=0;/定義無參構(gòu)造函數(shù),使A的值為空 A(char *aa) a= _ ; /進行動態(tài)存儲分配 strcpy(a,aa);/用aa所指

19、字符串初始化a所指向的動態(tài)存儲空間 _ ; /定義析構(gòu)函數(shù),刪除a所指向的動態(tài)存儲空間 ;三、編程題1創(chuàng)建一個Employee類,該類中有字符數(shù)組表示姓名、街道地址、市、省和郵政編碼。把表示構(gòu)造函數(shù)、ChangeName函數(shù)、Display函數(shù)的函數(shù)原型放在類定義中,構(gòu)造函數(shù)初始化每個成員,Display函數(shù)把完整的對象數(shù)據(jù)打印出來。其中的數(shù)據(jù)成員是保護的,函數(shù)是公共的。2設(shè)計并測試類Point,其數(shù)據(jù)成員是直角坐標(biāo)系的點坐標(biāo)。友元函數(shù)distance用來計算兩點間的距離。3定義一個Rectangle類,有寬width、長length等屬性,重載其構(gòu)造函數(shù)Rectangle、Rectangle

20、(int width , int length)。4編寫一個程序,設(shè)計一個Cdate類,它應(yīng)該滿足下面的條件。 用這樣的格式輸出日期:日-月-年。 輸出在當(dāng)前日期上加兩天后的日期。 設(shè)置日期。5按照下面函數(shù)原型語句編寫一個遞歸函數(shù)求出并返回數(shù)組a中n個元素的平方和。 int f(int a,int n)6根據(jù)下面類中Sum函數(shù)成員的原型和注釋寫出它的類外定義。 class AA int *a; int n; int MS; public: void InitAA(int aa,int nn,int ms) if(nn>ms)cout<<"Error!"&l

21、t;<endl;exit(1); MS=ms; a=new intMS; for(int i=0;i<n;i+)ai=aai; int Sum();/求出并返回數(shù)組a中前n個元素之和 ;7定義一個基類有姓名、性別、年齡,再由基類派生出教師類和學(xué)生類,教師類增加工號、職稱和工資,學(xué)生類增加學(xué)號、班級、專業(yè)和入學(xué)成績。8下列Shape類是一個表示形狀的抽象類,area()為求圖形面積的函數(shù),total()則是一個通用的用以求不同形狀的圖形面積總和的函數(shù)。請從Shape類派生三角形類(Triangle)、矩形類(Rectangle),并給出具體的求面積函數(shù)。class Shape pub

22、lic: virtual float area()=0; float total(Shape *s,int n) float sum=0.0; for(int i=0;i<n;i+) sum+=si->area(); return sum; 9聲明一個Shape類(形狀)基類,它有兩個派生類:Circle(圓)和Square(正方形),要求如下。 根據(jù)給出的圓心坐標(biāo)計算圓的面積。 根據(jù)給出的正方形中心坐標(biāo)和一個頂點坐標(biāo)計算該正方形的面積。提示:Shape類的數(shù)據(jù)成員包括中心的坐標(biāo),Circle類和Square類由Shape類派生,Circle類新增一個數(shù)據(jù)成員,即圓的半徑,Squa

23、re類新增兩個數(shù)據(jù)成員,即頂點坐標(biāo)。明該對話框?qū)ο笠巡淮嬖诹?。二、填空題1引用2構(gòu)造函數(shù) 析構(gòu)函數(shù)3A(),B()4this, A *5靜態(tài)數(shù)據(jù)成員 靜態(tài)成員函數(shù)6friend7派生類 基類8public、protected、private9virtual10基類 派生類自身11成員函數(shù)12. 運行時13. 靜態(tài)聯(lián)編,動態(tài)聯(lián)編14. public vehicle ,public vehicle15. 基類 A中的成員函數(shù). 派生類B中的成員函數(shù).16. C類 B類17抽象函數(shù)18. 優(yōu)先級 2. 1 219. A operator +(int) friend A operator +(A &a

24、mp;,int)20. Time Time:operator +(int)21輸入消息、控制消息、系統(tǒng)消息、用戶消息22WM_LBOTTONDOWN OnLButtonDown23CDC24設(shè)備環(huán)境25模態(tài)對話框 非模態(tài)對話框26構(gòu)造函數(shù) OnInitDialog()函數(shù)27CColorDialog、CFileDialog、CFindReplaceDialog、CFontDialog、CPrintDialog28CeditView29OnNewDocument()30Invalidate()或InvalidateRect()31下一行323 和 3.2 335 34代碼354×i 3

25、6單繼承37不能夠38AB( )39 a 40241靜態(tài)42友元43virtual44=045抽象類46抽象類47AB481 5 14 30 55 91 140 20449輸入2個整數(shù)相加的結(jié)果,結(jié)果正確返回1,否則返回050將字符串中的小寫字母轉(zhuǎn)換為大寫51非多態(tài)調(diào)用52第一操作數(shù)53operatro double()54operator +=(x,y)55 (istream &,CSAI &)56. 不能57. 多態(tài)58. return mid low=mid+159. new charstrlen(aa)+1 A()delete a;三、編程題1 #include <

26、;iostream.h>#include <string.h>class Employee protected:char name20;char address100;char city20;char province20;char zipcode10;public: Employee(char *nm,char *addr,char *city, char *prov, char *zip); void ChangeName(char * newName); char * Display(char * buffer);Employee:Employee(char *nm,

27、char *adr, char *cit, char *prov, char *zip) strcpy(name,nm);strcpy(address,adr);strcpy(city,cit);strcpy(province,prov);strcpy(zipcode,zip); void Employee:ChangeName(char * newName)strcpy(name, newName);char * Employee:Display(char *buffer)strcpy(buffer, name);strcat(buffer, address);return buffer;2

28、 #include <iostream.h>#include <math.h>class Pointprivate:float x, y;public:Point(float xx, float yy) x=xx; y=yy; float GetX() return x; float GetY() return y; friend float distance(Point&, Point&);float distance(Point& a, Point& b)float dx = a.x - b.x;float dy = a.y - b.

29、y;cout<<" 用友元函數(shù) distance(). 顯示兩點的坐標(biāo) : n "cout<<a.x<<", "<<a.y<<" "<<b.x<<", "<<b.y<<endl; return sqrt(dx*dx+dy*dy);void main()float d;Point p1(10.5, 20.5), p2(2.5, 6.5);d=distance(p1, p2);cout<<"

30、 兩點的距離 : d = "<<d<<endl;cin.get();3 #include<iostream.h>class Rectanglepublic:Rectangle();Rectangle(int width,int length);Rectangle()int GetWidth()constreturn m_width;int GetLength()return m_length;private:int m_width;int m_length;Rectangle:Rectangle()m_width=5;m_length=10;Rec

31、tangle:Rectangle(int width,int length)m_width=width;m_length=length;int main()Rectangle rect1;cout<<"rect1 width:"<<rect1.GetWidth()<<endl;cout<<"rect1 length:"<<rect1.GetLength()<<endl;int a,b;cout<<"Enter a width:"cin>>a

32、;cout<<"nEnter a length:"cin>>b;Rectangle rect2(a,b);cout<<"nrect2 width:"<<rect2.GetWidth()<<endl;cout<<"rect2 length:"<<rect2.GetLength()<<endl;return 0;4 #include<iostream.h>class Cdateint year,month,day; int y1,m

33、1,d1;public:void setdate(int y,int m,int d)year=y;month=m;day=d;void show()cout<<"當(dāng)前日期: "<<day<<"-"<<month<<"-"<<year<<endl; cout<<"兩天后日期:"<<d1<<"-"<<m1<<"-"<<y1&

34、lt;<endl; void datetwo() /加一天后的年月日 d1=day;y1=year;m1=month;for(int i=0;i<2;i+) d1+; switch(d1) case 29:if(!(month=2 &&(year%400=0|year%4=0&&year%100!=0) m1=3;d1=1;break; case 30:if(month=2 &&(year%400=0|year%4=0&&year%100!=0) m1=3;d1=1;break; case 31:if(month=4|

35、month=6|month=9|month=11) m1=m1+1;d1=1;break; case 32: m1=m1+1;d1=1;if(month=12)y1=y1+1;m1=1;break; ;void main()Cdate d; int y,m,d1;cout<<"請輸入年月日: "cin>>y>>m>>d1; d.setdate(y,m,d1);/加一天 d.setdate(y,m,d1);/再加一天 d.datetwo(); d.show();5程序如下: int f(int a,int n) if(n=1)r

36、eturn a0*a0; else return an-1*an-1+f(a,n-1); 6程序如下: int AA:Sum() int sum=0; for(int i=0;i<n;i+) sum+=ai; return sum ; 7 #include<iostream.h>#include<string.h>#include<iomanip.h>class base /定義一個基類protected: char name20; /姓名 char sex3; /性別 int age; /年齡 ;class teacher:public base /

37、基類派生出教師類 int sno; /工號 char zc20; /職稱 double wages; /工資 ;class student :public base /基類派生出學(xué)生類 int sno; /學(xué)號 char bj10; /班級 char zy10; /專業(yè) double score; /入學(xué)成績;8 class Shape public: virtual float area()=0; float total(Shape *s,int n) float sum=0.0; for(int i=0;i<n;i+) sum+=si->area(); return sum;

38、class Triangle:public Shapepublic:Triangle(double h,double w)H=h;W=w;double area() constreturn H*W*0.5;private:double H,W; class Rectangle:public Shapepublic:Rectangle(double h,double w)H=h;W=w;double area()constreturn H*W;private:double H,W;9 #include<iostream.h> class Shape public: virtual d

39、ouble GetArea()=0; ; class Circle:public Shape double radius; public: Circle(double r):radius(r) double GetArea()return 3.1416*radius*radius; ; class Square:public Rectangle public: Square(double l):Rectangle(l,l) ; int main() Rectangle r(3.5,4.0); Circle c(2.0); Square s(5.0); cout<<r.GetArea

40、()<<endl; cout<<c.GetArea()<<endl; cout<<s.GetArea()<<endl; return 0; 一、選擇題1、類的實例化是指( C )。A、定義類 B、指明具體類 C、創(chuàng)建類的對象 D、調(diào)用類的成員2、關(guān)于類和對象的說法不正確的是( B )。A、對象是類的一個實例 B、一個類只能有一個對象 C、一個對象只屬于一個具體類 D、類與對象的關(guān)系和數(shù)據(jù)類型與變量的關(guān)系相似3、下面說法正確的是( B )。A、內(nèi)置函數(shù)在運行時是將該函數(shù)的目標(biāo)代碼插入每個調(diào)用該函數(shù)的地方B、內(nèi)置函數(shù)在編譯時是將該函數(shù)的目

41、標(biāo)代碼插入每個調(diào)用該函數(shù)的地方C、類的內(nèi)置函數(shù)必須在類體內(nèi)定義D、類的內(nèi)置函數(shù)必須在類體外通過加關(guān)鍵字inline定義4、對于任意一個類,析構(gòu)函數(shù)的個數(shù)最多為( A )。A、1 B、2 C、和構(gòu)造函數(shù)個數(shù)一樣 D、任意多個5、在下面的類定義中,錯誤的語句是( D )。class samplepublic: sample(int val);/(1) sample( ); /(2) private: int a=2.5;/(3) sample( );/(4); A、(1)(2)(3)(4) B、(1)(2)(3) C、(2) D、(3)6、有關(guān)構(gòu)造函數(shù)的說法不正確的是( D )。A、構(gòu)造函數(shù)名字和

42、類的名字一樣B、構(gòu)造函數(shù)在定義類變量時自動執(zhí)行C、構(gòu)造函數(shù)無任何函數(shù)類型D、構(gòu)造函數(shù)有且只有一個7、不屬于成員函數(shù)的是( B )。A、靜態(tài)成員函數(shù) B、友元函數(shù) C、構(gòu)造函數(shù) D、析構(gòu)函數(shù)8、已知類A是類B的友元,類B是類C的友元,則( D )。A、類A一定是類C的友元 B、類C一定是類A的友元C、類C的成員函數(shù)可以訪問類B的對象的任何成員 D、類A的成員函數(shù)可以訪問類B的對象的任何成員9、在建立類對象時( A )。A、只為每個對象分配用于保存數(shù)據(jù)成員的內(nèi)存 B、只為每個對象分配用于保存函數(shù)員的內(nèi)存C、為所有對象的數(shù)據(jù)成員和函數(shù)成員分配一個共享的內(nèi)存 D、為每個對象的數(shù)據(jù)成員和函數(shù)成員同時分配

43、不同的內(nèi)存10、下列說法錯誤的是( B )。A、封裝是將一組數(shù)據(jù)和這組數(shù)據(jù)有關(guān)的操作組裝在一起 B、封裝使對象之間不需要確定接口C、封裝要求對象應(yīng)具有明確的功能 D、封裝使得一個對象可以像一個部件一樣用在各種程序中11、要禁止修改指針p本身,也要禁止修改p所指向的數(shù)據(jù),這樣的指針應(yīng)定義為( D )。A、const char *p=”abcd”; B、char const *p=”abcd”; C、char *const p=”abcd”; D、const char *const p=”abcd”;12、下面有關(guān)析構(gòu)函數(shù)正確的是( A )。A、一個類只能定義一個析構(gòu)函數(shù)B、析構(gòu)函數(shù)的名字與類名可以不同C、析構(gòu)函數(shù)只能定義在類內(nèi)D、析構(gòu)函數(shù)至少包含一個參數(shù)13、下列運算符中,不能重載的是( B )。A、! B、sizeof() C、new

溫馨提示

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

評論

0/150

提交評論