




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、1 c+ 簡答題和編程題匯總一、簡答題:1有以下程序結構,請分析訪問屬性。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; 問: ( 1 )派生類 cb中的成員函數(shù)能否引用基類ca 中的數(shù)據(jù)成員 i,j,k?( 2 )派生類 cc 中的成員函數(shù)能否調用基類ca 中的成員函數(shù) fun1 和 fun2?( 3 ) 能 否 在main 函 數(shù) 中 用c.fun1(),c.fun2(),c.fun3() 和c.fun4() 調 用fun1,fun2,fun3,fun4 成員函數(shù)?答:( 1)可以用 b1.i 引用對象 b中的基類 a 的成員 i,因為它是公用數(shù)據(jù)成員。不能用 b1.j 引用對象 b 中的基類 a 的成員 j,因為它是保護數(shù)據(jù)成員,在類外不能訪問。不能用 b1.k 引用對象 b 中的基類 a 的
3、成員 k,因為它是私有數(shù)據(jù)成員,在類外不能訪問。(2)可以引用基類 a 中的數(shù)據(jù)成員 i,j,因為它們在派生類中是公用成員和保護成員,可以被派生類的成員函數(shù)訪問。不可以引用基類a 中的數(shù)據(jù)成員 k,它在2 派生類中是不可訪問的成員。(3)可以調用成員函數(shù)f1,f3,f4,它們是公用成員函數(shù)。不能調用成員函數(shù)f2,因為它是保護成員函數(shù)。2為什么要使用虛基類?怎樣定義虛基類?用一個實例來解釋虛基類在其派生類中的存儲方式。答:如果一個派生類有多個直接基類,而這些直接基類又有一個共同的基類,則在最終的派生類中會保留該間接共同基類數(shù)據(jù)成員的多份同名成員。如圖所示:class personint no身份
4、證號,class studentint no學生號,class gstudentint no研究生號,class personint no身份證號,class employeeint no工作證號,class egstudentint no在職學號,(a) 派生關系person 成員student新成員gstudent新成員person成員employee新成員egstudent 新成員personstudentpersonemployeegstudentegstudent(b) 存儲圖存儲關系如 (b),在職研究生類有兩個person拷貝。為避免這種情況,可使用虛基類。虛基類(virtual
5、 base class )定義方式如下:class 派生類名 :virtual 繼承方式 基類類名 .; virtual 關鍵字只對緊隨其后的基類名起作用。采用虛基類后存儲關系如下:3 采用虛基類后在職研究生類儲存圖student gstudent egstudent person student新成員gstudent新成員person employee 新成員person成員egstudent新成員person person employe3請比較函數(shù)重載和虛函數(shù)在概念和使用方式方面有什么區(qū)別?答:( 1)函數(shù)重載可以用于普通函數(shù)(非成員函數(shù))和成員函數(shù),而虛函數(shù)只能用于類的成員函數(shù);(2)
6、函數(shù)重載可以用于構造函數(shù),而虛函數(shù)不能用于構造函數(shù);(3)如果對成員函數(shù)進行重載,則重載的函數(shù)與被重載的函數(shù)應當都是同一個類的成員函數(shù),不能分屬于兩個不同繼承層次的類。虛函數(shù)是對同一類族中基類和派生類的同名函數(shù)的處理,即允許在派生類中對基類的成員函數(shù)重新定義。(4)重載的函數(shù)必須具有相同的函數(shù)名,但函數(shù)參數(shù)個數(shù)和參數(shù)類型二者中至少有一樣不同。而虛函數(shù)則要求在同一族中的所有虛函數(shù)不僅函數(shù)名相同,而且要求函數(shù)類型、函數(shù)參數(shù)個數(shù)和參數(shù)類型都全部相同。(5)重載的函數(shù)是在程序編譯階段確定操作對象的,屬靜態(tài)關聯(lián)。虛函數(shù)是在程序運行階段確定操作的對象的,屬動態(tài)關聯(lián)。4派生類的析構函數(shù)中需完成什么任務?是否
7、要編寫對基數(shù)和成員對象的析構函數(shù)的調用?為什么?答:析構函數(shù)的功能是在對象被系統(tǒng)釋放之前做必要的“清理現(xiàn)場”的工作,析構函數(shù)無返回類型也沒有參數(shù),情況比較簡單。派生類析構函數(shù)定義格式與非派生類無任何差異,不要編寫對基數(shù)和成員對象的析構函數(shù)的調用,只要在函數(shù)體內(nèi)把派生類新增一般成員處理好就可以了,因為對新增的成員對象和基類的善后工作,系統(tǒng)會自己調用成員對象和基類的析構函數(shù)來完成。5簡單敘述派生類與基類的賦值兼容規(guī)則。答:凡是基類所能解決的問題,公有派生類都可以解決。在任何需要基類對象的地方都可以用公有派生類的對象來代替,這條規(guī)則稱賦值兼容規(guī)則。它包括以下情況:(1)派生類的對象可以賦值給基類的對
8、象,這時是把派生類對象中從對應基類中繼承來的成員賦值給基類對象。反過來不行,因為派生類的新成員無值可賦。4 (2) 可以將一個派生類的對象的地址賦給其基類的指針變量,但只能通過這個指針訪問派生類中由基類繼承來的成員,不能訪問派生類中的新成員。同樣也不能反過來做。(3) 派生類對象可以初始化基類的引用。引用是別名,但這個別名只能包含派生類對象中的由基類繼承來的成員。6為什么析構函數(shù)總是要求說明為虛函數(shù)?答:在基類中及其派生類中都動態(tài)分配內(nèi)存空間時,必須把析構函數(shù)定義為虛函數(shù),實現(xiàn)撤消對象時的多態(tài)性。根據(jù)賦值兼容規(guī)則可以用基類的指針指向派生類對象,如果由該指針撤銷派生類對象,則必須將析構函數(shù)說明為
9、虛函數(shù),實現(xiàn)多態(tài)性,自動調用派生類析構函數(shù)。我們總是要求將類設計成通用的,無論其他程序員怎樣調用都必須保證不出錯,所以必須把析構函數(shù)定義為虛函數(shù)。二、編程題1 (類的聲明和運算符重載)設計一個日期類date,要求:( 1) 可 以 建立 具 有 指定 日 期 ( 年 、月 、 日 ) 的 date 對 象 , 默 認 日 期 是2007.1.1。(2)可以從輸出流輸出一個格式為“年-月-日”的日期,其中年是四位數(shù)據(jù),月、日可以是一位也可以是兩位數(shù)據(jù)。(3)可以動態(tài)地設置年、月、日。(4)可以用運算符 = =對兩個日期進行是否相等的比較。(5)在主函數(shù)中進行該類的測試。2編寫一個程序,涉及一個類
10、score 用于統(tǒng)計一個班的學生成績,其中使用一個靜態(tài)數(shù)據(jù)成員sumfenshu 存儲總分和一個靜態(tài)成員函數(shù)getsumfenshu() 返回該總分。3用類模板方式設計一個棧類stack,其中有兩個私有數(shù)據(jù)成員s(存放棧元素)和 top(棧頂元素下標),以及三個公有成員函數(shù)push(元素入棧)、 pop(元素出棧)和stackempty (判斷棧是否為空),并建立一個整數(shù)棧和一個字符棧。4 (類的聲明和友元函數(shù))設計一個程序,其中有三個類cbank、bbank、gbank,分別為中國銀行類、工商銀行類和農(nóng)業(yè)銀行類。每個類都包含一個私有數(shù)據(jù) balance 用于存放儲戶在該行的存款數(shù),另有一個友
11、元函數(shù)max 用于顯示三家銀行中存款最多的銀行和存款數(shù)。類結構如圖所示:類類類clankintblancebbankintblancegbankintblancetotal()函數(shù)友元函數(shù)友元函數(shù)友元函數(shù)編程題 2 的類結構5(類的繼承和類的組合)實現(xiàn)兩個類person類和 scores類,其中 person類中5 包含了公有的個人基本信息,如姓名、性別和年齡等。scores類包含了公有的考試科目成員如語文、數(shù)學、英語等的成績?,F(xiàn)要求實現(xiàn)一個student類,它繼承自person 類,并加入了私有的一個表示學號的新成員number 和一個 scores成員對象。要求:(1)student類中的
12、個人基本信息和成績單的訪問屬性為私有;(2)重載的 student構造函數(shù)能接受 person對象和 score對象作為參數(shù),也能接受直接給出的個人基本信息和成績信息作為參數(shù)。(3)student類提供設置和訪問個人信息和成績的接口函數(shù)。6(虛函數(shù))已知一個抽象基類person,其結構如下:class person public: virtual void info()=0; 要求在person 類的基礎上派生一個student 類和一個teacher類,并實現(xiàn)虛函數(shù)info() ,它打印出學生和教師的個人信息。其中,學生的個人信息包括學號、姓名、年齡、性別和系別;教師的個人信息包括工號、姓名
13、、年齡、性別和職稱。另外,實現(xiàn)全局函數(shù)print(person*),它接受一個person類型的指針作為參數(shù),調用 person的 info()函數(shù),打印出person的個人信息。實例化student和 teacher對象,對象的個人信息在定義對象時給定,用print()函數(shù)打印出他們的個人信息。7下列 shape類是一個表示形狀的抽象類,area( )為求圖形面積的函數(shù), total( )則是一個通用的用以求不同形狀的圖形面積總和的函數(shù)。請從shape類派生三角形類(triangle)、矩形類( 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編寫程序,需要求3 個長方柱的體積,
16、請編寫一個基于對象的程序。數(shù)據(jù)成員包括 length(長)、width(寬)、 height(高)。要求用成員函數(shù)實現(xiàn)以下功能:(1) 定義構造函數(shù)完成長方柱的初始化;(2) 計算長方柱的體積;(3) 輸出長方柱的體積。#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ù)模板求一個數(shù)組中最大的元素,并以整數(shù)數(shù)組和字符數(shù)組
18、進行調試。#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編寫一個學生和教師數(shù)據(jù)輸入和顯示程序,學生數(shù)據(jù)要求有編號、姓名、班級和成績,教師數(shù)據(jù)有編號、姓名、部門和職稱。要求將編號、姓名的輸入和顯示設計成一個類 person,并作為學生數(shù)據(jù)操作類student和教師數(shù)據(jù)操作類teacher的基類,學生數(shù)據(jù)中的班級和成績的輸入和顯示在student 類中實現(xiàn),教師數(shù)據(jù)中的部門和職稱的輸入和顯示在teacher類中實現(xiàn)。最后在主函數(shù)中進行該類的測試。(14分)下面給出了基類 person的主要成員:(1) 私有成員: int no;編號 string name; 姓名(2) 公有成員:
20、void input(); 編號和姓名的輸入 void display(); 編號和姓名的顯示#include #include using namespace std; /定義公共基類 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. 本站所有資源如無特殊說明,都需要本地電腦安裝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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 木工雕刻協(xié)議書
- 2019-2025年一級造價師之建設工程計價考前沖刺試卷B卷含答案
- 2019-2025年二級建造師之二建建設工程施工管理強化訓練試卷B卷附答案
- 車輛合作協(xié)議合同協(xié)議
- 轉讓文具店協(xié)議合同模板
- 購買拍賣店面合同協(xié)議
- 轉讓烤酒設備合同協(xié)議
- 旅游事故協(xié)議書
- 運輸雜物合同協(xié)議模板
- 車輛小修保養(yǎng)合同協(xié)議
- 2025-2031年中國電競俱樂部行業(yè)市場需求預測及投資規(guī)劃建議報告
- 學校環(huán)境對兒童心理健康的積極影響
- 2025年中國石油集團招聘筆試參考題庫含答案解析
- 智能制造能力成熟度模型(-CMMM-)介紹及評估方法分享
- 網(wǎng)絡協(xié)議優(yōu)化與適配-洞察分析
- 市場營銷試題(含參考答案)
- 重慶市2023年度居民健康狀況報告
- (輸血科)培訓計劃
- 預拌混凝土質量管理
- 工貿(mào)行業(yè)隱患排查指導手冊
- 第四單元《保護牙齒》活動三《保護牙齒》教案 浙教版綜合實踐活動二年級上冊
評論
0/150
提交評論