C++簡(jiǎn)答題和編程題匯總題庫(kù)_第1頁(yè)
C++簡(jiǎn)答題和編程題匯總題庫(kù)_第2頁(yè)
C++簡(jiǎn)答題和編程題匯總題庫(kù)_第3頁(yè)
C++簡(jiǎn)答題和編程題匯總題庫(kù)_第4頁(yè)
C++簡(jiǎn)答題和編程題匯總題庫(kù)_第5頁(yè)
已閱讀5頁(yè),還剩6頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1 c+ 簡(jiǎn)答題和編程題匯總一、簡(jiǎn)答題:1有以下程序結(jié)構(gòu),請(qǐng)分析訪問(wèn)屬性。class ca public: void fun1( ); int i; protected: void fun2( ); int j; private: int k; ; class cb: protected ca public: void fun3( ); protected: int m; private: int n; ; class cc: public cb public: void fun4( ); private: int p; ; int main( ) ca a; cb b; cc c1; ret

2、urn 0; 問(wèn): ( 1 )派生類(lèi) cb中的成員函數(shù)能否引用基類(lèi)ca 中的數(shù)據(jù)成員 i,j,k?( 2 )派生類(lèi) cc 中的成員函數(shù)能否調(diào)用基類(lèi)ca 中的成員函數(shù) fun1 和 fun2?( 3 ) 能 否 在main 函 數(shù) 中 用c.fun1(),c.fun2(),c.fun3() 和c.fun4() 調(diào) 用fun1,fun2,fun3,fun4 成員函數(shù)?答:( 1)可以用 b1.i 引用對(duì)象 b中的基類(lèi) a 的成員 i,因?yàn)樗枪脭?shù)據(jù)成員。不能用 b1.j 引用對(duì)象 b 中的基類(lèi) a 的成員 j,因?yàn)樗潜Wo(hù)數(shù)據(jù)成員,在類(lèi)外不能訪問(wèn)。不能用 b1.k 引用對(duì)象 b 中的基類(lèi) a 的

3、成員 k,因?yàn)樗撬接袛?shù)據(jù)成員,在類(lèi)外不能訪問(wèn)。(2)可以引用基類(lèi) a 中的數(shù)據(jù)成員 i,j,因?yàn)樗鼈冊(cè)谂缮?lèi)中是公用成員和保護(hù)成員,可以被派生類(lèi)的成員函數(shù)訪問(wèn)。不可以引用基類(lèi)a 中的數(shù)據(jù)成員 k,它在2 派生類(lèi)中是不可訪問(wèn)的成員。(3)可以調(diào)用成員函數(shù)f1,f3,f4,它們是公用成員函數(shù)。不能調(diào)用成員函數(shù)f2,因?yàn)樗潜Wo(hù)成員函數(shù)。2為什么要使用虛基類(lèi)?怎樣定義虛基類(lèi)?用一個(gè)實(shí)例來(lái)解釋虛基類(lèi)在其派生類(lèi)中的存儲(chǔ)方式。答:如果一個(gè)派生類(lèi)有多個(gè)直接基類(lèi),而這些直接基類(lèi)又有一個(gè)共同的基類(lèi),則在最終的派生類(lèi)中會(huì)保留該間接共同基類(lèi)數(shù)據(jù)成員的多份同名成員。如圖所示:class personint no身份

4、證號(hào),class studentint no學(xué)生號(hào),class gstudentint no研究生號(hào),class personint no身份證號(hào),class employeeint no工作證號(hào),class egstudentint no在職學(xué)號(hào),(a) 派生關(guān)系person 成員student新成員gstudent新成員person成員employee新成員egstudent 新成員personstudentpersonemployeegstudentegstudent(b) 存儲(chǔ)圖存儲(chǔ)關(guān)系如 (b),在職研究生類(lèi)有兩個(gè)person拷貝。為避免這種情況,可使用虛基類(lèi)。虛基類(lèi)(virtual

5、 base class )定義方式如下:class 派生類(lèi)名 :virtual 繼承方式 基類(lèi)類(lèi)名 .; virtual 關(guān)鍵字只對(duì)緊隨其后的基類(lèi)名起作用。采用虛基類(lèi)后存儲(chǔ)關(guān)系如下:3 采用虛基類(lèi)后在職研究生類(lèi)儲(chǔ)存圖student gstudent egstudent person student新成員gstudent新成員person employee 新成員person成員egstudent新成員person person employe3請(qǐng)比較函數(shù)重載和虛函數(shù)在概念和使用方式方面有什么區(qū)別?答:( 1)函數(shù)重載可以用于普通函數(shù)(非成員函數(shù))和成員函數(shù),而虛函數(shù)只能用于類(lèi)的成員函數(shù);(2)

6、函數(shù)重載可以用于構(gòu)造函數(shù),而虛函數(shù)不能用于構(gòu)造函數(shù);(3)如果對(duì)成員函數(shù)進(jìn)行重載,則重載的函數(shù)與被重載的函數(shù)應(yīng)當(dāng)都是同一個(gè)類(lèi)的成員函數(shù),不能分屬于兩個(gè)不同繼承層次的類(lèi)。虛函數(shù)是對(duì)同一類(lèi)族中基類(lèi)和派生類(lèi)的同名函數(shù)的處理,即允許在派生類(lèi)中對(duì)基類(lèi)的成員函數(shù)重新定義。(4)重載的函數(shù)必須具有相同的函數(shù)名,但函數(shù)參數(shù)個(gè)數(shù)和參數(shù)類(lèi)型二者中至少有一樣不同。而虛函數(shù)則要求在同一族中的所有虛函數(shù)不僅函數(shù)名相同,而且要求函數(shù)類(lèi)型、函數(shù)參數(shù)個(gè)數(shù)和參數(shù)類(lèi)型都全部相同。(5)重載的函數(shù)是在程序編譯階段確定操作對(duì)象的,屬靜態(tài)關(guān)聯(lián)。虛函數(shù)是在程序運(yùn)行階段確定操作的對(duì)象的,屬動(dòng)態(tài)關(guān)聯(lián)。4派生類(lèi)的析構(gòu)函數(shù)中需完成什么任務(wù)?是否

7、要編寫(xiě)對(duì)基數(shù)和成員對(duì)象的析構(gòu)函數(shù)的調(diào)用?為什么?答:析構(gòu)函數(shù)的功能是在對(duì)象被系統(tǒng)釋放之前做必要的“清理現(xiàn)場(chǎng)”的工作,析構(gòu)函數(shù)無(wú)返回類(lèi)型也沒(méi)有參數(shù),情況比較簡(jiǎn)單。派生類(lèi)析構(gòu)函數(shù)定義格式與非派生類(lèi)無(wú)任何差異,不要編寫(xiě)對(duì)基數(shù)和成員對(duì)象的析構(gòu)函數(shù)的調(diào)用,只要在函數(shù)體內(nèi)把派生類(lèi)新增一般成員處理好就可以了,因?yàn)閷?duì)新增的成員對(duì)象和基類(lèi)的善后工作,系統(tǒng)會(huì)自己調(diào)用成員對(duì)象和基類(lèi)的析構(gòu)函數(shù)來(lái)完成。5簡(jiǎn)單敘述派生類(lèi)與基類(lèi)的賦值兼容規(guī)則。答:凡是基類(lèi)所能解決的問(wèn)題,公有派生類(lèi)都可以解決。在任何需要基類(lèi)對(duì)象的地方都可以用公有派生類(lèi)的對(duì)象來(lái)代替,這條規(guī)則稱(chēng)賦值兼容規(guī)則。它包括以下情況:(1)派生類(lèi)的對(duì)象可以賦值給基類(lèi)的對(duì)

8、象,這時(shí)是把派生類(lèi)對(duì)象中從對(duì)應(yīng)基類(lèi)中繼承來(lái)的成員賦值給基類(lèi)對(duì)象。反過(guò)來(lái)不行,因?yàn)榕缮?lèi)的新成員無(wú)值可賦。4 (2) 可以將一個(gè)派生類(lèi)的對(duì)象的地址賦給其基類(lèi)的指針變量,但只能通過(guò)這個(gè)指針訪問(wèn)派生類(lèi)中由基類(lèi)繼承來(lái)的成員,不能訪問(wèn)派生類(lèi)中的新成員。同樣也不能反過(guò)來(lái)做。(3) 派生類(lèi)對(duì)象可以初始化基類(lèi)的引用。引用是別名,但這個(gè)別名只能包含派生類(lèi)對(duì)象中的由基類(lèi)繼承來(lái)的成員。6為什么析構(gòu)函數(shù)總是要求說(shuō)明為虛函數(shù)?答:在基類(lèi)中及其派生類(lèi)中都動(dòng)態(tài)分配內(nèi)存空間時(shí),必須把析構(gòu)函數(shù)定義為虛函數(shù),實(shí)現(xiàn)撤消對(duì)象時(shí)的多態(tài)性。根據(jù)賦值兼容規(guī)則可以用基類(lèi)的指針指向派生類(lèi)對(duì)象,如果由該指針撤銷(xiāo)派生類(lèi)對(duì)象,則必須將析構(gòu)函數(shù)說(shuō)明為

9、虛函數(shù),實(shí)現(xiàn)多態(tài)性,自動(dòng)調(diào)用派生類(lèi)析構(gòu)函數(shù)。我們總是要求將類(lèi)設(shè)計(jì)成通用的,無(wú)論其他程序員怎樣調(diào)用都必須保證不出錯(cuò),所以必須把析構(gòu)函數(shù)定義為虛函數(shù)。二、編程題1 (類(lèi)的聲明和運(yùn)算符重載)設(shè)計(jì)一個(gè)日期類(lèi)date,要求:( 1) 可 以 建立 具 有 指定 日 期 ( 年 、月 、 日 ) 的 date 對(duì) 象 , 默 認(rèn) 日 期 是2007.1.1。(2)可以從輸出流輸出一個(gè)格式為“年-月-日”的日期,其中年是四位數(shù)據(jù),月、日可以是一位也可以是兩位數(shù)據(jù)。(3)可以動(dòng)態(tài)地設(shè)置年、月、日。(4)可以用運(yùn)算符 = =對(duì)兩個(gè)日期進(jìn)行是否相等的比較。(5)在主函數(shù)中進(jìn)行該類(lèi)的測(cè)試。2編寫(xiě)一個(gè)程序,涉及一個(gè)類(lèi)

10、score 用于統(tǒng)計(jì)一個(gè)班的學(xué)生成績(jī),其中使用一個(gè)靜態(tài)數(shù)據(jù)成員sumfenshu 存儲(chǔ)總分和一個(gè)靜態(tài)成員函數(shù)getsumfenshu() 返回該總分。3用類(lèi)模板方式設(shè)計(jì)一個(gè)棧類(lèi)stack,其中有兩個(gè)私有數(shù)據(jù)成員s(存放棧元素)和 top(棧頂元素下標(biāo)),以及三個(gè)公有成員函數(shù)push(元素入棧)、 pop(元素出棧)和stackempty (判斷棧是否為空),并建立一個(gè)整數(shù)棧和一個(gè)字符棧。4 (類(lèi)的聲明和友元函數(shù))設(shè)計(jì)一個(gè)程序,其中有三個(gè)類(lèi)cbank、bbank、gbank,分別為中國(guó)銀行類(lèi)、工商銀行類(lèi)和農(nóng)業(yè)銀行類(lèi)。每個(gè)類(lèi)都包含一個(gè)私有數(shù)據(jù) balance 用于存放儲(chǔ)戶(hù)在該行的存款數(shù),另有一個(gè)友

11、元函數(shù)max 用于顯示三家銀行中存款最多的銀行和存款數(shù)。類(lèi)結(jié)構(gòu)如圖所示:類(lèi)類(lèi)類(lèi)clankintblancebbankintblancegbankintblancetotal()函數(shù)友元函數(shù)友元函數(shù)友元函數(shù)編程題 2 的類(lèi)結(jié)構(gòu)5(類(lèi)的繼承和類(lèi)的組合)實(shí)現(xiàn)兩個(gè)類(lèi)person類(lèi)和 scores類(lèi),其中 person類(lèi)中5 包含了公有的個(gè)人基本信息,如姓名、性別和年齡等。scores類(lèi)包含了公有的考試科目成員如語(yǔ)文、數(shù)學(xué)、英語(yǔ)等的成績(jī)。現(xiàn)要求實(shí)現(xiàn)一個(gè)student類(lèi),它繼承自person 類(lèi),并加入了私有的一個(gè)表示學(xué)號(hào)的新成員number 和一個(gè) scores成員對(duì)象。要求:(1)student類(lèi)中的

12、個(gè)人基本信息和成績(jī)單的訪問(wèn)屬性為私有;(2)重載的 student構(gòu)造函數(shù)能接受 person對(duì)象和 score對(duì)象作為參數(shù),也能接受直接給出的個(gè)人基本信息和成績(jī)信息作為參數(shù)。(3)student類(lèi)提供設(shè)置和訪問(wèn)個(gè)人信息和成績(jī)的接口函數(shù)。6(虛函數(shù))已知一個(gè)抽象基類(lèi)person,其結(jié)構(gòu)如下:class person public: virtual void info()=0; 要求在person 類(lèi)的基礎(chǔ)上派生一個(gè)student 類(lèi)和一個(gè)teacher類(lèi),并實(shí)現(xiàn)虛函數(shù)info() ,它打印出學(xué)生和教師的個(gè)人信息。其中,學(xué)生的個(gè)人信息包括學(xué)號(hào)、姓名、年齡、性別和系別;教師的個(gè)人信息包括工號(hào)、姓名

13、、年齡、性別和職稱(chēng)。另外,實(shí)現(xiàn)全局函數(shù)print(person*),它接受一個(gè)person類(lèi)型的指針作為參數(shù),調(diào)用 person的 info()函數(shù),打印出person的個(gè)人信息。實(shí)例化student和 teacher對(duì)象,對(duì)象的個(gè)人信息在定義對(duì)象時(shí)給定,用print()函數(shù)打印出他們的個(gè)人信息。7下列 shape類(lèi)是一個(gè)表示形狀的抽象類(lèi),area( )為求圖形面積的函數(shù), total( )則是一個(gè)通用的用以求不同形狀的圖形面積總和的函數(shù)。請(qǐng)從shape類(lèi)派生三角形類(lèi)(triangle)、矩形類(lèi)( rectangle ) ,并給出具體的求面積函數(shù)。#include using namespac

14、e std; class shape public: virtual double area() const=0; ; double total(shape *s,int n) double sum=0.0; for(int i=0;iarea(); return sum; class triangle:public shape public: triangle(double h,double w)h=h;w=w; double area() constreturn h*w*0.5; 6 private: double h,w; ; class rectangle:public shape p

15、ublic: rectangle(double h,double w)h=h;w=w; double area()constreturn h*w; private: double h,w; ; int main() triangle triangle1(4.0,3.3); rectangle rectangle1(5.0,4.0); shape *arr2=&triangle1,&rectangle1; double sum_area=total(arr,2); couttotal area=sum_areaendl; return 0; 8編寫(xiě)程序,需要求3 個(gè)長(zhǎng)方柱的體積,

16、請(qǐng)編寫(xiě)一個(gè)基于對(duì)象的程序。數(shù)據(jù)成員包括 length(長(zhǎng))、width(寬)、 height(高)。要求用成員函數(shù)實(shí)現(xiàn)以下功能:(1) 定義構(gòu)造函數(shù)完成長(zhǎng)方柱的初始化;(2) 計(jì)算長(zhǎng)方柱的體積;(3) 輸出長(zhǎng)方柱的體積。#include using namespace std; class box public: box(float l,float w,float h):length(l),width(w),height(h) float volume(); void display(); public: float length; float width; float height; ; f

17、loat box:volume() return(length*width*height); void box:display() coutvolume()endl; 7 int main() box box1(3,2,1),box2(4,3,2),box3(5,4,3); coutvolmue of box1 is ; box1.display(); coutvolmue of box2 is ; box2.display(); coutvolmue of box3 is ; box3.display(); return 0; 9設(shè)計(jì)一個(gè)函數(shù)模板求一個(gè)數(shù)組中最大的元素,并以整數(shù)數(shù)組和字符數(shù)組

18、進(jìn)行調(diào)試。#include using namespace std; template t max(t a,int length) t temp; temp=a0; for(int i=1;ilength;i+) if(tempai) temp=ai; return temp; int main() int a5,m; coutplease input 5 numbers endl; for( int i=0;iai; m=max(a,5); coutmax=mendl; char b5,n; coutplease input 5 char endl; 8 for( i=0;ibi; n=ma

19、x(b,5); coutmax=nendl; return 0; 10編寫(xiě)一個(gè)學(xué)生和教師數(shù)據(jù)輸入和顯示程序,學(xué)生數(shù)據(jù)要求有編號(hào)、姓名、班級(jí)和成績(jī),教師數(shù)據(jù)有編號(hào)、姓名、部門(mén)和職稱(chēng)。要求將編號(hào)、姓名的輸入和顯示設(shè)計(jì)成一個(gè)類(lèi) person,并作為學(xué)生數(shù)據(jù)操作類(lèi)student和教師數(shù)據(jù)操作類(lèi)teacher的基類(lèi),學(xué)生數(shù)據(jù)中的班級(jí)和成績(jī)的輸入和顯示在student 類(lèi)中實(shí)現(xiàn),教師數(shù)據(jù)中的部門(mén)和職稱(chēng)的輸入和顯示在teacher類(lèi)中實(shí)現(xiàn)。最后在主函數(shù)中進(jìn)行該類(lèi)的測(cè)試。(14分)下面給出了基類(lèi) person的主要成員:(1) 私有成員: int no;編號(hào) string name; 姓名(2) 公有成員:

20、void input(); 編號(hào)和姓名的輸入 void display(); 編號(hào)和姓名的顯示#include #include using namespace std; /定義公共基類(lèi) person class person public: virtual void input() cinnoname; virtual void display() coutno=no name=nametitledepart_no; void display() couttitle=title department=depart_noclass_noscore; void display() coutcla

21、ss_no=class_no score=scoreendl; private: int class_no; float score; ; int main( ) person person; person *p; teacher teacher; student student; coutplease input teachers no,name,title and department:input(); p=&teacher; 10 p-input(); coutdisplay teachers no,name,title and department:display(); p=&teacher; p-display(); coutp

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論