版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
千里之行,始于足下讓知識(shí)帶有溫度。第第2頁/共2頁精品文檔推薦C++簡答題和編程題匯總-題庫C++簡答題和編程題匯總
一、簡答題:
1.有以下程序結(jié)構(gòu),請(qǐng)分析拜訪屬性。
classCA
{public:
voidfun1();
inti;
protected:
voidfun2();
intj;
private:
intk;
};
classCB:protectedCA
{public:
voidfun3();
protected:
intm;
private:
intn;
};
classCC:publicCB
{public:
voidfun4();
private:
intp;
};
intmain()
{CAa;
CBb;
CCc1;
return0;}
問:(1)派生類CB中的成員函數(shù)能否引用基類CA中的數(shù)據(jù)成員i,j,k?
(2)派生類CC中的成員函數(shù)能否調(diào)用基類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中的基類A的成員i,由于它是公用數(shù)據(jù)成員。不能用b1.j引用對(duì)象b中的基類A的成員j,由于它是庇護(hù)數(shù)據(jù)成員,在類外不能拜訪。
不能用b1.k引用對(duì)象b中的基類A的成員k,由于它是私有數(shù)據(jù)成員,在類外不
能拜訪。
(2)可以引用基類A中的數(shù)據(jù)成員i,j,由于它們?cè)谂缮愔惺枪贸蓡T和庇護(hù)成員,可以被派生類的成員函數(shù)拜訪。不行以引用基類A中的數(shù)據(jù)成員k,它在派生類中是不行拜訪的成員。
(3)可以調(diào)用成員函數(shù)f1,f3,f4,它們是公用成員函數(shù)。不能調(diào)用成員函數(shù)f2,由于它是庇護(hù)成員函數(shù)。
2.為什么要使用虛基類?怎樣定義虛基類?用一個(gè)實(shí)例來解釋虛基類在其派生類中的存儲(chǔ)方式。
答:假如一個(gè)派生類有多個(gè)直接基類,而這些直接基類又有一個(gè)共同的基類,則在終于的派生類中會(huì)保留該間接共同基類數(shù)據(jù)成員的多份同名成員。如圖所示:
(a)派生關(guān)系(b)存儲(chǔ)圖
存儲(chǔ)關(guān)系如(b),在職討論生類有兩個(gè)Person拷貝。
為避開這種狀況,可使用虛基類。虛基類(virtualbaseclass)定義方式如下:class派生類名:virtual繼承方式基類類名{...};
virtual關(guān)鍵字只對(duì)緊隨其后的基類名起作用。
采納虛基類后存儲(chǔ)關(guān)系如下:
采納虛基類后在職討論生類儲(chǔ)存圖
3.請(qǐng)比較函數(shù)重載和虛函數(shù)在概念和使用方式方面有什么區(qū)分?
答:(1)函數(shù)重載可以用于一般函數(shù)(非成員函數(shù))和成員函數(shù),而虛函數(shù)只能用于類的成員函數(shù);
(2)函數(shù)重載可以用于構(gòu)造函數(shù),而虛函數(shù)不能用于構(gòu)造函數(shù);
(3)假如對(duì)成員函數(shù)舉行重載,則重載的函數(shù)與被重載的函數(shù)應(yīng)該都是同一個(gè)類的成員函數(shù),不能分屬于兩個(gè)不同繼承層次的類。虛函數(shù)是對(duì)同一類族中基類和派生類的同名函數(shù)的處理,即允許在派生類中對(duì)基類的成員函數(shù)重新定義。
(4)重載的函數(shù)必需具有相同的函數(shù)名,但函數(shù)參數(shù)個(gè)數(shù)和參數(shù)類型二者中至少有一樣不同。而虛函數(shù)則要求在同一族中的全部虛函數(shù)不僅函數(shù)名相同,而且要求函數(shù)類型、函數(shù)參數(shù)個(gè)數(shù)和參數(shù)類型都所有相同。
(5)重載的函數(shù)是在程序編譯階段確定操作對(duì)象的,屬靜態(tài)關(guān)聯(lián)。虛函數(shù)是在程序運(yùn)行階段確定操作的對(duì)象的,屬動(dòng)態(tài)關(guān)聯(lián)。
4.派生類的析構(gòu)函數(shù)中需完成什么任務(wù)?是否要編寫對(duì)基數(shù)和成員對(duì)象的析構(gòu)函數(shù)的調(diào)用?為什么?
答:析構(gòu)函數(shù)的功能是在對(duì)象被系統(tǒng)釋放之前做須要的“清理現(xiàn)場”的工作,析構(gòu)函數(shù)無返回類型也沒有參數(shù),狀況比較容易。派生類析構(gòu)函數(shù)定義格式與非派生類無任何差異,不要編寫對(duì)基數(shù)和成員對(duì)象的析構(gòu)函數(shù)的調(diào)用,只要在函數(shù)體內(nèi)把派生類新增普通成員處理好就可以了,由于對(duì)新增的成員對(duì)象和基類的善后工作,系統(tǒng)會(huì)自己調(diào)用成員對(duì)象和基類的析構(gòu)函數(shù)來完成。
5.容易講述派生類與基類的賦值兼容規(guī)章。
答:凡是基類所能解決的問題,公有派生類都可以解決。在任何需要基類對(duì)象的地方都可以用公有派生類的對(duì)象來代替,這條規(guī)章稱賦值兼容規(guī)章。它包括以下狀況:
(1)派生類的對(duì)象可以賦值給基類的對(duì)象,這時(shí)是把派生類對(duì)象中從對(duì)應(yīng)基類中繼承來的成員賦值給基類對(duì)象。反過來不可,由于派生類的新成員無值可賦。
(2)可以將一個(gè)派生類的對(duì)象的地址賦給其基類的指針變量,但只能通過這個(gè)指針拜訪派生類中由基類繼承來的成員,不能拜訪派生類中的新成員。同樣也不能反過來做。
(3)派生類對(duì)象可以初始化基類的引用。引用是別號(hào),但這個(gè)別號(hào)只能包含派生類對(duì)象中的由基類繼承來的成員。
6.為什么析構(gòu)函數(shù)總是要求說明為虛函數(shù)?
答:在基類中及其派生類中都動(dòng)態(tài)分配內(nèi)存空間時(shí),必需把析構(gòu)函數(shù)定義為虛函數(shù),實(shí)現(xiàn)撤消對(duì)象時(shí)的多態(tài)性。按照賦值兼容規(guī)章可以用基類的指針指向派生類對(duì)象,假如由該指針撤銷派生類對(duì)象,則必需將析構(gòu)函數(shù)說明為虛函數(shù),實(shí)現(xiàn)多態(tài)性,自動(dòng)調(diào)用派生類析構(gòu)函數(shù)。我們總是要求將類設(shè)計(jì)成通用的,無論其他程序員怎樣調(diào)用都必需保證不出錯(cuò),所以必需把析構(gòu)函數(shù)定義為虛函數(shù)。
二、編程題
1.(類的聲明和運(yùn)算符重載)設(shè)計(jì)一個(gè)日期類Date,要求:
(1)可以建立具有指定日期(年、月、日)的Date對(duì)象,默認(rèn)日期是2022.1.1。
(2)可以從輸出流輸出一個(gè)格式為“年-月-日”的日期,其中年是四位數(shù)據(jù),月、日可以是一位也可以是兩位數(shù)據(jù)。
(3)可以動(dòng)態(tài)地設(shè)置年、月、日。
(4)可以用運(yùn)算符==對(duì)兩個(gè)日期舉行是否相等的比較。
(5)在主函數(shù)中舉行該類的測試。
2.編寫一個(gè)程序,涉及一個(gè)類score用于統(tǒng)計(jì)一個(gè)班的同學(xué)成果,其中使用一個(gè)靜態(tài)數(shù)據(jù)成員sumfenshu存儲(chǔ)總分和一個(gè)靜態(tài)成員函數(shù)Getsumfenshu()返回該總分。
3.用類模板方式設(shè)計(jì)一個(gè)棧類Stack,其中有兩個(gè)私有數(shù)據(jù)成員s[](存放棧元素)和top(棧頂元素下標(biāo)),以及三個(gè)公有成員函數(shù)push(元素入棧)、pop(元素出棧)和stackempty(推斷棧是否為空),并建立一個(gè)整數(shù)棧和一個(gè)字符棧。
4.(類的聲明和友元函數(shù))設(shè)計(jì)一個(gè)程序,其中有三個(gè)類CBank、BBank、GBank,分離為中國銀行類、工商銀行類和農(nóng)業(yè)銀行類。每個(gè)類都包含一個(gè)私有數(shù)據(jù)balance用于存放儲(chǔ)戶在該行的存款數(shù),另有一個(gè)友元函數(shù)max用于顯示三家
編程題2的類結(jié)構(gòu)
5.(類的繼承和類的組合)實(shí)現(xiàn)兩個(gè)類person類和scores類,其中person類
中包含了公有的個(gè)人基本信息,如姓名、性別和年齡等。scores類包含了公有的考試科目成員如語文、數(shù)學(xué)、英語等的成果?,F(xiàn)要求實(shí)現(xiàn)一個(gè)student類,它繼承自person類,并加入了私有的一個(gè)表示學(xué)號(hào)的新成員number和一個(gè)scores成員對(duì)象。要求:
(1)student類中的個(gè)人基本信息和成果單的拜訪屬性為私有;
(2)重載的student構(gòu)造函數(shù)能接受person對(duì)象和score對(duì)象作為參數(shù),也能接受直接給出的個(gè)人基本信息和成果信息作為參數(shù)。
(3)student類提供設(shè)置和拜訪個(gè)人信息和成果的接口函數(shù)。
6.(虛函數(shù))已知一個(gè)抽象基類person,其結(jié)構(gòu)如下:
classperson
{public:
virtualvoidinfo()=0;
}
要求在person類的基礎(chǔ)上派生一個(gè)student類和一個(gè)teacher類,并實(shí)現(xiàn)虛函數(shù)info(),它打印出同學(xué)和老師的個(gè)人信息。其中,同學(xué)的個(gè)人信息包括學(xué)號(hào)、姓名、年齡、性別和系別;老師的個(gè)人信息包括工號(hào)、姓名、年齡、性別和職稱。另外,實(shí)現(xiàn)全局函數(shù)print(person*),它接受一個(gè)person類型的指針作為參數(shù),調(diào)用person的info()函數(shù),打印出person的個(gè)人信息。實(shí)例化student和teacher對(duì)象,對(duì)象的個(gè)人信息在定義對(duì)象時(shí)給定,用print()函數(shù)打印出他們的個(gè)人信息。
7.下列shape類是一個(gè)表示外形的抽象類,area()為求圖形面積的函數(shù),total()則是一個(gè)通用的用以求不同外形的圖形面積總和的函數(shù)。請(qǐng)從shape類派生三角形類(triangle)、矩形類(rectangle),并給出詳細(xì)的求面積函數(shù)。
#include
usingnamespacestd;
classshape{
public:
virtualdoublearea()const=0;
};
doubletotal(shape*s[],intn)
{
doublesum=0.0;
for(inti=0;iarea();
returnsum;
}
classTriangle:publicshape
{
public:
Triangle(doubleh,doublew){H=h;W=w;}
doublearea()const{returnH*W*0.5;}
private:
doubleH,W;
};
classRectangle:publicshape
{
public:
Rectangle(doubleh,doublew){H=h;W=w;}
doublearea()const{returnH*W;}
private:
doubleH,W;
};
intmain()
{
Triangletriangle1(4.0,3.3);
Rectanglerectangle1(5.0,4.0);
shape*arr[2]={
doublesum_area=total(arr,2);
cout
usingnamespacestd;
classBox
{public:
Box(floatl,floatw,floath):length(l),width(w),height(h){}
floatvolume();
voiddisplay();
public:
floatlength;
floatwidth;
floatheight;
};
floatBox::volume()
{return(length*width*height);}
voidBox::display()
{cout
usingnamespacestd;
template
Tmax(Ta[],intlength)
{Ttemp;
temp=a[0];
for(inti=1;i>a[i];
m=max(a,5);
cout>b[i];
n=max(b,5);
cout
#include
usingnamespacestd;
//定義公共基類Person
classPerson
{public:
virtualvoidinput()
{cin>>no>>name;}
virtualvoiddisplay()
{cout>title>>depart_no;}
voiddisplay()
{cout>class_no>>score;}
voiddisplay()
{coutinput();
p=
p->input();
coutdisplay();
p=
p->display();
coutinput();
p=
p->input();
coutdisplay();
p=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 幼兒園編程特色課程設(shè)計(jì)
- 才上課程設(shè)計(jì)
- 我是小農(nóng)夫課程設(shè)計(jì)
- 差分放大電路課程設(shè)計(jì)
- 大學(xué)課程設(shè)計(jì)掛了后果
- 鄉(xiāng)村學(xué)校圖書館建設(shè)專項(xiàng)行動(dòng)方案
- 引導(dǎo)式教育集體課程設(shè)計(jì)
- 焦?fàn)t煙氣處理的國際經(jīng)驗(yàn)與本土方案
- 招投標(biāo)專用本 課程設(shè)計(jì)
- 區(qū)塊鏈技術(shù)在藥品管理中的應(yīng)用制度
- 《我們?nèi)タ春!烽喿x答案
- 智慧酒店無人酒店綜合服務(wù)解決方案
- 考研英語一新題型歷年真題(2005-2012)
- 健身房會(huì)籍顧問基礎(chǔ)培訓(xùn)資料
- 9脊柱與四肢、神經(jīng)系統(tǒng)檢查總結(jié)
- 秀場內(nèi)外-走進(jìn)服裝表演藝術(shù)智慧樹知到答案章節(jié)測試2023年武漢紡織大學(xué)
- 【高分復(fù)習(xí)筆記】王建《現(xiàn)代自然地理學(xué)》(第2版)筆記和課后習(xí)題詳解
- TSGD0012023年壓力管道安全技術(shù)監(jiān)察規(guī)程-工業(yè)管道(高清晰版)
- SMM英國建筑工程標(biāo)準(zhǔn)計(jì)量規(guī)則中文 全套
- 2023-2024學(xué)年浙江省富陽市小學(xué)數(shù)學(xué)四年級(jí)上冊(cè)期末通關(guān)題
- 2023-2024學(xué)年浙江省瑞安市小學(xué)數(shù)學(xué)三年級(jí)上冊(cè)期末自測試題
評(píng)論
0/150
提交評(píng)論