版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
《面對對象程序設(shè)計(jì)C++》期末考試試卷(B)
班級:姓名:學(xué)號:分?jǐn)?shù):
題號—■二三四總分
得分
試卷說明:本套試題共四個(gè)大題,全部題目都答在答題紙上,寫在其他地方均無效。
(答題紙?jiān)诒咎自嚲淼牡?頁上)
一、單項(xiàng)選擇題(每小題2分,共40分)
1、關(guān)于C++與C語言關(guān)系的描述中,(D)是錯(cuò)誤的。
A.C語言是C++語言的一個(gè)子集B.C語言與C++語言是兼容的
C.C++語言對C語言進(jìn)行了一些改進(jìn)D.C++語言和C語言都是面對對象的
2、已知:intm=10;下列表示引用的方法中,(A)是正確的。
A.int&x=m;B.int&y=10;C.int&z;D.float&t=&m;
3、考慮下面的函數(shù)原型聲明:voidtestDefaulParam(inta,intb=7,charz='*');
下面函數(shù)調(diào)用中,不合法的是(C)o
A.testDefaulParam(5);B.testDefaulParam(5,8);
C.testDefaulParam(5D.testDefaulParam(0,0,'*');
4、系統(tǒng)在調(diào)用重載函數(shù)時(shí)往往依據(jù)一些條件確定哪個(gè)重載函數(shù)被調(diào)用,在下列選
項(xiàng)中,不能作為依據(jù)的是(A)0
A.函數(shù)的返回值類型B.參數(shù)的類型C.函數(shù)名稱D.參數(shù)個(gè)數(shù)
5、下列有關(guān)C++類的說法中,不正確的是(D)。
A.類是一種用戶自定義的數(shù)據(jù)類型
B.只有類中的成員函數(shù)或類的友元函數(shù)才能存取類中的私有成員
C.在類中,假如不做特殊說明,全部成員的訪問權(quán)限均為私有的
D.在類中,假如不做特殊說明,全部成員的訪問權(quán)限均為公用的
6、已知X類,則當(dāng)程序執(zhí)行到語句Xarray[3];時(shí),調(diào)用了(D)次構(gòu)造函數(shù)。
A.0B.1C.2D.3
7、有關(guān)析構(gòu)函數(shù)的說法,不正確的是(B)。
A.析構(gòu)函數(shù)有且僅有一個(gè)
B.析構(gòu)函數(shù)和構(gòu)造函數(shù)一樣可以有形參
C.析構(gòu)函數(shù)的功能是在系統(tǒng)釋放對象之前作一些內(nèi)存清理工作
D.析構(gòu)函數(shù)無任何函數(shù)類型
8、類定義的內(nèi)容允許被其對象無限制地存取的是(C)。
A.private部分B.protected部分C.public部分D.以上都不對
9、關(guān)于常數(shù)據(jù)成員的說法,不正確的是()。
A.常數(shù)據(jù)成員的定義形式與一般常變量的定義形式相同,只不過常數(shù)據(jù)成員的
定義必需出現(xiàn)在類體中
B.常數(shù)據(jù)成員必需進(jìn)行初始化,并且不能被更新
C.常數(shù)據(jù)成員通過構(gòu)造函數(shù)的成員初始化列表進(jìn)行初始化
D.常數(shù)據(jù)成員可以在定義時(shí)干脆初始化
10、運(yùn)用運(yùn)算符delete刪除一個(gè)動態(tài)對象時(shí)()。
A.系統(tǒng)首先為該動態(tài)對象調(diào)用構(gòu)造函數(shù),再釋放其占用的內(nèi)存
B.系統(tǒng)首先釋放該動態(tài)對象占用的內(nèi)存,再為其調(diào)用構(gòu)造函數(shù)
C.系統(tǒng)首先為該動態(tài)對象調(diào)用析構(gòu)函數(shù),再釋放其占用的內(nèi)存
D.系統(tǒng)首先釋放動態(tài)對象占用的內(nèi)存,再為其調(diào)用析構(gòu)函數(shù)
11、可以在類外用p.a的形式訪問派生類對象p的基類成員a,其中a是(D)。
A.私有繼承的公用成員B.公用繼承的私有成員
C.公用繼承的愛護(hù)成員D.公用繼承的公用成員
12、在公用繼承方式下,有關(guān)派生類對象和基類對象的關(guān)系,不正確的敘述是()。
A.派生類的對象可以賦給基類的對象
B.派生類的對象可以初始化基類的引用
C.派生類的對象可以干脆訪問基類中的成員
D.派生類的對象的地址可以賦給指向基類的指針
13、設(shè)置虛基類的目的是(B)。
A.簡化程序B.消退二義性C.提高運(yùn)行效率D.削減目標(biāo)代碼
14、在C++中,用于實(shí)現(xiàn)動態(tài)多態(tài)性的是(D)。
A.內(nèi)聯(lián)函數(shù)B.重載函數(shù)C.模板函數(shù)D.虛函數(shù)
15、不能說明為虛函數(shù)的是()。
A.析構(gòu)函數(shù)B.構(gòu)造函數(shù)C.類的成員函數(shù)D.以上都不對
16、假如一個(gè)類至少有一個(gè)純虛函數(shù),那么就稱該類為()o
A.抽象類B.派生類C.純基類D.以上都不對
17、下面關(guān)于友元的描述中,錯(cuò)誤的是(
A.友元函數(shù)可以訪問該類的私有數(shù)據(jù)成員
B.一個(gè)類的友元類中的成員函數(shù)都是這個(gè)類的友元函數(shù)
C.友元可以提高程序的運(yùn)行效率
D.類與類之間的友元關(guān)系可以繼承
18、下列運(yùn)算符中,()運(yùn)算符在C++中不能被重載。
A.&&B.[]C.::D.new
19、模板的運(yùn)用事實(shí)上是將類模板實(shí)例化成一個(gè)()o
A.函數(shù)B.對象C.類D.抽象類
20、假定MyClass為一個(gè)類,則該類的拷貝構(gòu)造函數(shù)的聲明語句為()。
A.MyClass(MyClassx)B.MyClass&(MyClassx)
C.MyClass(MyClass&x)D.MyClass(MyClass*x)
二、填空題(前16個(gè)空,每空1分,后2個(gè)空,每空2分,共20分)
1、類和對象的關(guān)系可表述為:類是對象的,而對象則是類的O
2、在C++中,三種繼承方式的說明符號為、和,
假如不加說明,則默認(rèn)的繼承方式為o
3、假如只想保留公共基類的一個(gè)復(fù)制,就必需運(yùn)用關(guān)鍵字把這個(gè)公共基
類聲明為虛基類。
4、若要把voidfun()定義為類A的友元函數(shù),則應(yīng)在類A的定義中加入語
句o
5、類的靜態(tài)成員分為和。
6、運(yùn)算符重載要求保持其原來的操作數(shù)個(gè)數(shù)、、和語
法結(jié)構(gòu)。
7、通過關(guān)鍵字可以聲明模板,通過關(guān)鍵字指定函數(shù)模板的
類型參數(shù),有幾個(gè)類型參數(shù)就有幾個(gè)類型關(guān)鍵字。
8、列出C++中兩種用戶自定義的數(shù)據(jù)類型:、。
9、構(gòu)造函數(shù)的作用是o
10、后置自增運(yùn)算符“++”重載為類的成員函數(shù)(設(shè)類名為A)的形式為。
三、閱讀下面3個(gè)程序,寫出程序運(yùn)行時(shí)輸出的結(jié)果:(共13分)
1、#include<iostream>
usingnamespacestd;
voidfun(int&a,int&b)
{intp;
p=a;a=b;b=p;
)
voidexchange(int&a,int&b,int&c)
{if(a<b)fun(a,b);
if(a<c)fun(a,c);
if(b<c)fun(b,c);
)
intmain()
{inta=12,b=89,c=56;
exchange(a,b,c);
cout?,,a=',?a?n,b="?b?',,c=,,?c?endl;
return0;
2、#include<iostream>
usingnamespacestd;
classDate
{public:
Date(int,int,int);
Date(int,int);
Date(int);
Date();
voiddisplayO;
private:
intmonth,day,year;
);
Date::Date(intm,intd,inty):month(m),day(d),year(y){}
Date::Date(intm,intd):month(m),day(d){year=2009;}
Date::Date(intm):month(m){day=1;year=2010;}
Date::Date(){month=l;day=l;year=2010;}
voidDate::display(){cout?month?,7"?day?,7,,?year?endl;}
intmain()
{Datedl(12,31,2009);
Dated2(12,31);
Dated3(l);
Dated4;
dl.display();
d2.display();
d3.display();
d4.display();
return0;}
3、#include<iostream>
usingnamespacestd;
classA
{public:
A(){cout?nconstructingAu?endl;}
-A(){cout?"destructingAn?endl;}};
classB:publicA
{public:
B(){cout?nconstructingBn?endl;}
-B(){cout?"destructingBn?endl;}};
classC:publicB
{public:
C(){cout?nconstructingCH?endl;}
-C(){cout?ndestructingCn?endl;}};
intmain()
{Cel;
return0;
)
四、編程題(共27分)
1、(10分)已知復(fù)數(shù)類Complex的聲明如下:
classComplex
{public:
Complex();〃無參構(gòu)造函數(shù)
Complex(double);//轉(zhuǎn)換構(gòu)造函數(shù)
Complex(double,double);//有兩個(gè)形參的構(gòu)造函數(shù)
friendComplexoperator+(Complex&,Complex&);〃對”運(yùn)算符進(jìn)行重載
friendostream&operator?(ostream&,Complex&);〃對“vv”運(yùn)算符進(jìn)行重載
friendistream&operator?(istream&,Complex&);〃對運(yùn)算符進(jìn)行重載
private:
doublereaLimag;
要求:(1)寫出該類的全部構(gòu)造函數(shù)的類外定義代碼。
(2)寫出對運(yùn)算符“+”、“<<"、“>>”進(jìn)行重載的運(yùn)算符重載函數(shù)的定義。
2、(17分)下列Shape類是一個(gè)表示形態(tài)的抽象類,area()為求圖形面積的函數(shù),total()
則是一個(gè)通用的用以求不同形態(tài)的圖形面積總和的函數(shù)。
classShape
{public:
virtualdoublearea()=0;
doubletotal(Shape*s[],intn)
doublesum=0.0;
for(inti=0;i<n;i++)sum+=s[i]->area();
returnsum;
要求:(1)從Shape類派生圓類(Circle)、正方形類(Square),圓類新增數(shù)據(jù)成員半
徑(radius),正方形類新增數(shù)據(jù)成員邊長(a),圓類和正方形類都有構(gòu)造函數(shù),修
改、顯示數(shù)據(jù)成員值的函數(shù),求面積函數(shù)。
(2)寫出main。函數(shù),計(jì)算半徑為5.5的圓和邊長為9.9的正方形的面積和(必
需通過調(diào)用total函數(shù)計(jì)算)。
《面對對象程序設(shè)計(jì)C++》期末考試試卷(B)標(biāo)準(zhǔn)答案
班級:姓名:學(xué)號:分?jǐn)?shù):
題號—■二三四總分
得分
一、單項(xiàng)選擇題(每小題2分,共40分)
1-5.DACAD6-10.DBCDC
11-15.DCBDB16-20.ADCCC
二、填空題(前16個(gè)空,每空1分,后2個(gè)空,每空2分,共20分)
1.W、
2.public、private、protected、private
3.virtual4.friendvoidfun(A&a)
5.靜態(tài)數(shù)據(jù)成員、靜態(tài)成員函數(shù)6.結(jié)合性、優(yōu)先級
7.Template、class(或lypename)8.______類_____、結(jié)構(gòu)體
9.在創(chuàng)建對象時(shí)初始化對象的數(shù)據(jù)成員_________________________________
10.Aoperator++(int)____________________________________________
三、閱讀程序(共13分)
1、a=89,b=56,c=12
2、12/31/2009
12/31/2009
1/1/2010
1/1/2010
3、constructingA
constructingB
constructingC
destructingC
destructingB
destructingA
四、編程題(共27分)
1、(10分)
Complex::Complex(){real=0;imag=0;}
Complex::Complex(doubler){real=r;}
Complex::Complex(doubler,doublei){real=r;imag=i;}
Complexoperator+(Complex&cl,Complex&c2)
{Complexc;
c.real=cl.real+c2.real;c.imag=cl.imag+c2.imag;
returnc;
}
ostream&operator?(ostream&output,Complex&c)
{output?,,(',?c.real?*14-',?c.imag?|,i)',?endl;
returnoutput;
)
istream&operator?(istream&input,Complex&c)
{cout?"inputrealandimaginarypartofcomplexnumber:'1;
input?c.real?c.imag;
returninput;
2、(17分)
classCircle:publicShape
{public:
Circle(doubler){radius=r;}
voidset()
{cout?"Pleaseinputthevalueofthecircle:"?endl;
cin?radius;
)
voidshow()
{cout?"theradiusofthecircle="?radius?endl;
doublearea(){return3.14159*radius*radius;}
private:
doubleradius;
);
classSquare:publicShape
{public:
Square(doublea){this->a=a;}
voidset()
{cout?"Pleaseinputthevalueofa:"?endl;
cin?a;
}
voidshow()
{cout?Ma="?a?endl;}
doublearea(){returna*a;}
private:
doublea;
intmain()
CircleC(5.5);
C.show();
SquareS(9.9);
S.show();
Shape*s[]={&C,&S};
cout?,,total=',?total(s,2)?endl;
return0;
《面對對象程序設(shè)計(jì)C++》期末考試試卷
一、選擇題(每小題3分,共48分。)
01、下列關(guān)于C++函數(shù)的敘述中,正確的是(C)。
A)每個(gè)函數(shù)至少要具有一個(gè)參數(shù)B)每個(gè)函數(shù)都必需返回
一個(gè)值
0函數(shù)在被調(diào)用之前必需先聲明D)函數(shù)不能自己調(diào)用自
己
02、下列關(guān)于類和對象的敘述中,錯(cuò)誤的是(A)。
A)一個(gè)類只能有一個(gè)對象B)對象是類的詳細(xì)實(shí)例
C)類是對某一類對象的抽象D)類和對象的關(guān)系是一
種數(shù)據(jù)類型與變量的關(guān)系
03、在C++中,用于實(shí)現(xiàn)運(yùn)行時(shí)多態(tài)性的是(D)o
A)內(nèi)聯(lián)函數(shù)B)重載函數(shù)C)模板函數(shù)D)虛函
數(shù)
04、下列關(guān)于運(yùn)算符重載的敘述中,正確的是(B)。
A)通過運(yùn)算符重載,可以定義新的運(yùn)算符B)有的運(yùn)算
符只能作為成員函數(shù)重載
C)若重載運(yùn)算符+,則相應(yīng)的運(yùn)算符函數(shù)名是+D)重載二元
運(yùn)算符時(shí),必需聲明兩個(gè)形參
05、對于語句cout<<x<〈endl;錯(cuò)誤的是描述是(D)。
A)“cout”是一個(gè)輸出流對象B)“endl”的作用是輸
出回車換行
0“x”是一個(gè)變量D)稱作提取運(yùn)算
符
06、有如下類聲明,則類MyDERIVED中愛護(hù)的數(shù)據(jù)成員和成員
函數(shù)的個(gè)數(shù)是()o
classMyBASE
{private:intk;
public:voidset(intn){k=n;}
intget()const{returnk;});
classMyDERIVED:protectedMyBASE
{protected:intj;
public:voidset(intm,intn){MyBASE::set(m);
j=n;}
intget()const{return
MyBASE::get()+j;}};
A)4B)3C)2D)1
07、已知在一個(gè)類體中包含如下函數(shù)原型:Volume
operator-(Volume)const;,下列關(guān)于這個(gè)函數(shù)的敘述中,錯(cuò)
誤的是(B)o
A)這是運(yùn)算符-的重載運(yùn)算符函數(shù)B)這個(gè)函數(shù)所重載的
運(yùn)算符是一個(gè)一元運(yùn)算符
0這是一個(gè)成員函數(shù)D)這個(gè)函數(shù)不變更類
的任何數(shù)據(jù)成員的值
08、執(zhí)行如下的程序段后,輸出結(jié)果是(C)o
cout.fill('*');cout.width(6);cout.fill(5;cout
?123?endl;
A)###123B)123##ttC)***l23D)123***
09、在下列函數(shù)原型中,可以作為類AA構(gòu)造函數(shù)的是(B)0
A)voidAA(int);B)intAA();C)AA(int)const;
D)AA(int);
10、下面四個(gè)選項(xiàng)中,(A)是用來聲明虛函數(shù)的。
A)virtualB)publicC)includeD)usingnamespace
11、實(shí)現(xiàn)運(yùn)行時(shí)的多態(tài)性要運(yùn)用(D)o
A)重載函數(shù)B)構(gòu)造函數(shù)C)析構(gòu)函數(shù)D)虛函數(shù)
12、要實(shí)現(xiàn)動態(tài)聯(lián)編,必需通過()調(diào)用虛函數(shù)。
A)對象指針B)成員名限定C)對象名D)派生類
名
13、以下(C)成員函數(shù)表示純虛函數(shù)。
A)virtualintvf(int);B)voidvf(int)=0;
C)virtualvoidvf()=0;D)virtualvoidvf(int){}
14、有如下類聲明:classXA
{private:intx;
public:XA(intn){x=n;}};
classXB:publicXA
{private:inty;
public:XB(inta,intb);};
在構(gòu)造函數(shù)XB的下列定義中,正確的是()o
A)XB::XB(inta,intb):x(a),y(b){}B)XB::XB(int
a,intb):XA(a),y(b){)
C)XB::XB(inta,intb):x(a),XB(b){}D)XB::XB(int
a,intb):XA(a),XB(b){}
15、在表達(dá)式x+y*z中,+是作為成員函數(shù)重載的運(yùn)算符,*
是作為非成員函數(shù)重載的運(yùn)算符。則operator+有個(gè)參
數(shù),operator*有參數(shù)。()
A)2、2B)2、1C)l、2D)l>1
16、應(yīng)在下列程序劃線處填入的正確語句是()o
classBase
{public:
voidfun(){cout?,/Base::fun,,<<endl;});
classDerived:publicBase
{voidfun()
{—〃顯示調(diào)用基類的函數(shù)fun()
cout<<,,Derived::fun,,<<endl;});
A)fun();B)Base,fun();C)Base::fun();D)
Base->fun();
二、填空題(每空2分,共20分。)
17、繼承、多態(tài)性18、友元19、私有
20>private或私有21、成員、友元
22>width/setw23、抽象類
17、面對對象程序設(shè)計(jì)有四個(gè)主要特點(diǎn),即抽象、封裝、多
態(tài)性和繼承性。
18、非成員函數(shù)應(yīng)聲明為類的友元函數(shù)才能訪問這個(gè)類的
private成員。
19、派生類中的成員不能干脆訪問基類中的私有、成員。
20、在用class定義一個(gè)類時(shí),數(shù)據(jù)成員和成員函數(shù)的默認(rèn)訪
問權(quán)限是私有。
21、運(yùn)算符重載函數(shù)可能是類的友元函數(shù),也可以是類的
成員函數(shù),還可以是一般函數(shù)。
22、用流對象的成員函數(shù)限制輸出格式時(shí),用于設(shè)置字段寬度
的流成員函數(shù)的名稱是width,與之作用相同的限制符名
稱是setw。
23、百有純虛函數(shù)的類稱為抽象類。
三、程序的填空、程序的執(zhí)行(每題4分,共20分。)
24、以下程序是定義一個(gè)計(jì)25、下列程序的輸出結(jié)果為2,
數(shù)器類counter,對其重載運(yùn)請將程序補(bǔ)充完整。
算符“+”,請?zhí)羁?。classBase
classcounter{public:
{private:intn;____voidfun()
public:{cout<<l;)
counter(){n=0;});
counter(inti){n=i;}classDerived:publicBase
____〃運(yùn)算符重載函數(shù){public:
{countert;voidfun(){cout<<2;}
t.n=n+c.n;returnt;}};
voiddisp()intmain()
{cout<<,,n=,,<<n<<endl;}{Base*p=newDerived;
};p->fun();
voidmain()deletep;
{counterreturn0;}
cl(5),c2(10),c3;
c3=cl+c2;
cl.disp();c2.disp();
c3.disp();}
26、寫出執(zhí)行下面程序的輸出結(jié)果。28、寫出執(zhí)行卜面程序
voidfun(int&x,inty)的輸出結(jié)果。
{intt=x;x=y;y=t;}classBase
intmain(){private:
{inta[2]={23,42};charc;
fun(a[l],a[0]);public:
Base(char
std::cout?a[0]z,<<a[l]<<std::endl;n):c(n){)
return0;}virtual
?Base(){cout?C;}
27、寫出執(zhí)行下面程序的輸出結(jié)果。};
classA{public:A(){cout〈〈”A〃;});classDer:public
classB{public:B(){;Base
classC:publicA{private:
{Bb;charc;
public:C(){cout?,,C,/;}public:
);Der(char
intmain(){Cobj;return0;}n):Base(n+1),c(n){}
^Der(){cout<<C;}
);
intmain()
{Der(〃X〃);
return0;}
四、編程題(12分)
29、編寫一個(gè)程序計(jì)算''三角形、正方形、圓形”三種圖形的
面積,要求:
a)抽象出一個(gè)基類base;b)在其中說明一個(gè)虛函數(shù)用來求面
積;c)利用派生類定義''三角形、正方形、圓形";d)編寫主
函數(shù)并測試。
參考答案
一、選擇題(每小題3分,共48分。)
01-05CADBD
06-10BBADA
11-16DACBCC
三、程序的填空、程序的執(zhí)行(每題4分,共20分。)
24、counteroperator+(counterc)
25、virtual
26、23,23
27、ABC
28、XY
四、編程題(12分)
29、
^include<iostream>
usingnamespacestd;
classbase
{public:
virtualfloatarea()const
{return0;}
);
classtriangle:publicbase
{protected:
floatbian,height;
public:
triangle(floata=0,floath=0){bian=a;height=h;}
virtualfloatarea()const
{returnbian*height/2;}
);
classsquare:publicbase
{protected:
floatbian;
public:
square(floata=0){bian=a;}
virtualfloatarea()const
{returnbian*bian;}
);
classcircle:publicbase
{protected:
floatradius;
public:
circle(floatr=0){radius=r;}
virtualfloatarea()const
{return3.14*radius*radius;}
);
intmain()
{trianglet(3,4);squares(5);circlec(2);
base*p;
p=&t;cout<<,,triangle,sarea:,z<<p->area()<<endl;
p=&s;cout<<"square'sarea:,z<<p->area()<<endl;
p=&c;cout<<,,circle,sarea:,z<<p->area()<<endl;
return0;
《面對對象程序設(shè)計(jì)C++》期末考試試卷(A)
班級:姓名:學(xué)號:分?jǐn)?shù):
題號一二三四總分
得分
試卷說明:本套試題共四個(gè)大題,全部題目都答在答題紙上,寫在其他地方均無效。
(答題紙?jiān)诒咎自嚲淼牡?0頁上)
一、選擇題(每小題2分,共40分)
1、C++是()。
A.面對對象的程序設(shè)計(jì)語言
B.面對過程的程序設(shè)計(jì)語言
C.既支持面對對象的程序設(shè)計(jì)又支持面對過程的程序設(shè)計(jì)的混合型語言
D.非結(jié)構(gòu)化的程序設(shè)計(jì)語言
2、面對對象程序設(shè)計(jì)思想的主要特征中不包括()o
A.封裝性B.多態(tài)性C.繼承性D.功能分解,逐步求精
3、若定義:stringstr;當(dāng)語句cin?str;執(zhí)行時(shí),從鍵盤輸入:
MicrosoftVisualStudio6.0!
所得的結(jié)果是str=()。
A.MicrosoftVisualStudio6.0!B.Microsoft
C.MicrosoftVisualD.MicrosoftVisualStudio6.0
4、考慮下面的函數(shù)原型聲明:voidtestDefaulParam(inta,intb=7,charz='*,);
下面函數(shù)調(diào)用中,不合法的是()。
A.testDefaulParam(5);B.testDefaulParam(5,8);
C.testDefaulParam(5,'#');D.testDefaulParam(0,0,'*');
5、下列語句中,將函數(shù)intsum(intx,inty)正確重載的是()。
A.floatsum(intx,inty);B.intsum(inta,intb);
C.floatsum(floatx,floaty);D.doublesum(inty,intx);
6、下列表示引用的方法中,()是正確的。
已知:inta=1000;
A.int&x=a;B.char&y;C.int&z=1000;D.float&t=&a;
7、在一個(gè)函數(shù)中,要求通過函數(shù)來實(shí)現(xiàn)一種不太困難的功能,并且要求加快執(zhí)行
速度,選用()o
A.內(nèi)聯(lián)函數(shù)B.重載函數(shù)C.遞歸調(diào)用D.嵌套調(diào)用
8、下列有關(guān)C++類的說法中,不正確的是()。
A.類是一種用戶自定義的數(shù)據(jù)類型
B.只有類中的成員函數(shù)或類的友元函數(shù)才能存取類中的私有成員
C.在類中,假如不做特殊說明,全部成員的訪問權(quán)限均為私有的
D.在類中,假如不做特殊說明,全部成員的訪問權(quán)限均為公用的
9、已知X類,則當(dāng)程序執(zhí)行到語句:Xarray[3];時(shí),調(diào)用了()次構(gòu)造函數(shù)。
A.0B.1C.2D.3
10、下面說法中,正確的是()
A.一個(gè)類只能定義一個(gè)構(gòu)造函數(shù),但可以定義多個(gè)析構(gòu)函數(shù)
B.一個(gè)類只能定義一個(gè)析構(gòu)函數(shù),但可以定義多個(gè)構(gòu)造函數(shù)
C.構(gòu)造函數(shù)與析構(gòu)函數(shù)同名,只要名字前加了一個(gè)求反符號(?)
D.構(gòu)造函數(shù)可以指定返回類型,而析構(gòu)函數(shù)不能指定任何返回類型,即使是void
類型也不行以
11、已知:print。函數(shù)是一個(gè)類的常成員函數(shù),它無返回值,下列表示中,()
是正確的。
A.voidprint()const;B.constvoidprint();
C.voidconstprint();D.voidprint(const);
12、下面描述中,表達(dá)錯(cuò)誤的是()
A.公用繼承時(shí)基類中的public成員在派生類中仍是public的
B.公用繼承時(shí)基類中的private成員在派生類中仍是private的
C.公用繼承時(shí)基類中的protected成員在派生類中仍是protected的
D.私有繼承時(shí)基類中的public成員在派生類中是private的
13、設(shè)置虛基類的目的是()。
A.簡化程序B.消退二義性C.提高運(yùn)行效率D.削減目標(biāo)代碼
14、下面()的敘述不符合賦值兼容規(guī)則。
A.派生類的對象可以賦值給基類的對象
B.基類的對象可以賦值給派生類的對象
C.派生類的對象可以初始化基類的對象
D.派生類的對象的地址可以賦值給指向基類的指針
15、關(guān)于虛函數(shù)的描述中,()是正確的。
A.虛函數(shù)是一個(gè)static類型的成員函數(shù)
B.虛函數(shù)是一個(gè)非成員函數(shù)
C.基類中說明白虛函數(shù)后,派生類中與其對應(yīng)的函數(shù)可不必說明為虛函數(shù)
D.派生類的虛函數(shù)與基類的虛函數(shù)具有不同的參數(shù)個(gè)數(shù)和類型
16、下面關(guān)于友元的描述中,錯(cuò)誤的是()。
A.友元函數(shù)可以訪問該類的私有數(shù)據(jù)成員
B.一個(gè)類的友元類中的成員函數(shù)都是這個(gè)類的友元函數(shù)
C.友元可以提高程序的運(yùn)行效率
D.類與類之間的友元關(guān)系可以繼承
17、下列關(guān)于靜態(tài)數(shù)據(jù)成員的說法,不正確的是()。
A.類中定義的公用靜態(tài)數(shù)據(jù)成員,可以通過類的對象來訪問
B.類中定義的全部靜態(tài)數(shù)據(jù)成員,都必需在類外初始化
C.靜態(tài)數(shù)據(jù)成員不是全部對象所共用的
D.一般的成員函數(shù)可以干脆訪問類中的靜態(tài)數(shù)據(jù)成員
18、假如表達(dá)式++i*k中的“++”和“”都是重載的友元運(yùn)算符,若采納運(yùn)算符函
數(shù)調(diào)用格式,則表達(dá)式還可以表示為()o
A.operator*(i.operator++(),k)B.operator*(operator++(i),k)
C.i.operator++().operator*(k)D.k.operator*(operator++(i))
19、下面對模板的聲明,正確的是()o
A.template<T>B.template<classTl,T2>
C.template<classTl,classT2>D.tempiate<classTl;classT2>
20、下列的各類函數(shù)中,()不是類的成員函數(shù)
A.構(gòu)造函數(shù)B.析構(gòu)函數(shù)C.友元函數(shù)D.復(fù)制構(gòu)造函數(shù)
二、填空題(前14個(gè)空,每空1分,后3個(gè)空,每空2分,共20分)
1、類和對象的關(guān)系可表述為:類是對象的,而對象則是類的O
2、靜態(tài)成員函數(shù)沒有隱含的,所以,在C++程序中,靜態(tài)成員函數(shù)主要
用來訪問靜態(tài)數(shù)據(jù)成員,而不訪問非靜態(tài)成員。
3、在圖1中,A,B,C,D,E,F均是類,其中屬于單繼承的派生類有,
屬于多繼承的派生類有,類F的基類有,類A的派生類
有o
圖1類的繼承層次圖
4、假如只想保留公共基類的一個(gè)復(fù)制,就必需運(yùn)用關(guān)鍵字把這個(gè)公共
基類聲明為虛基類。
5、從實(shí)現(xiàn)的角度來講,多態(tài)性可以劃分為兩類:和。
6、假如一個(gè)類包含一個(gè)或多個(gè)純虛函數(shù),則該類稱為。
7、若要把voidfun()定義為類A的友元函數(shù),則應(yīng)在類A的定義中加入語
句O
8、列出C++中的兩種代碼復(fù)用方式:和o
9、析構(gòu)函數(shù)的作用是。
10、假定A是一個(gè)類名,則該類的拷貝構(gòu)造函數(shù)的原型說明語句為:o
11、后置自增運(yùn)算符“++”重載為類的成員函數(shù)(設(shè)類名為A)的形式為:o
三、閱讀下面4個(gè)程序,寫出程序運(yùn)行時(shí)輸出的結(jié)果。(共13分)
1、
#include<iostream>
usingnamespacestd;
voidfun(int&a,int&b)
{intp;
p=a;a=b;b=p;
)
voidexchange(int&a,int&b,int&c)
{if(a<b)fun(a,b);
if(a<c)fun(a,c);
if(b<c)fun(b,c);
)
intmain()
{inta=12,b=89,c=56;
exchange(a,b,c);
cout?,,a=',?a?,,,b=,,?b?M,c=,,?c?endl;
return0;
)
2、
#include<iostream>
usingnamespacestd;
classA{
public:
A(){cout?"An;}
);
classB{
public:
B(){cout?nBn;}
classC:publicA{
public:
C(){cout?”C”;}
private:
Bb;
);
intmain(){
Cobj;
return0;
)
3、
#include<iostream>
usingnamespacestd;
classA
{public:
A(){cout?”A::A()calledAn";}
virtual-A(){cout?HA:>A()called.\nn;}
);
classB:publicA
{public:
B(inti)
{cout?"B::B()calledAn'1;
buf=newchar[i];
virtual-B()
{delete[]buf;
cout?HB::-B()called.\nM;
)
private:
char*buf;
);
intmain()
{A*a=newB(15);
deletea;
return0;
)
4、
#include<iostream>
usingnamespacestd;
classA
{public:
voidf(){cout?nCallA'sfunctionf()f,?endl;}
);
classB
{public:
voidf(){cout?"CallB'sfunctionf()"?endl;}
voidg(){cout?"CallB*sfunctiong()"?endl;}
);
classC:publicA,publicB
{public:
voidg(){cout?nCallCsfunctiong()"?endl;}
intmain()
{Ccc;
cc.B::f();
cc.B::g();
cc.g();
return0;
)
四、編程題(27分)
1、(10分)已知復(fù)數(shù)類Complex的聲明如下:
classComplex
{public:
Complex();〃無參構(gòu)造函數(shù)
Complex(double);//轉(zhuǎn)換構(gòu)造函數(shù)
Complex(double,double);〃有兩個(gè)形參的構(gòu)造函數(shù)
friendComplexoperator+(Complex&,Complex&);//對”運(yùn)算符進(jìn)行重載
friendostream&operator?(ostream&,Complex&);〃對“vv”運(yùn)算符進(jìn)行重載
friendistream&operator?(istream&,Complex&);〃對“>>”運(yùn)算符進(jìn)行重載
private:
doublereal,imag;
);
要求:(1)寫出該類的全部構(gòu)造函數(shù)的類外定義代碼。
(2)寫出對運(yùn)算符“+進(jìn)行重載的運(yùn)算符重載函數(shù)的定義。
2、(17分)下列Shape類是一個(gè)表示形態(tài)的抽象類,area。為求圖形面積的函數(shù),total。
則是一個(gè)通用的用以求不同形態(tài)的圖形面積總和的函數(shù)。
classShape
{public:
virtualdoublearea()=0;
doubletotal(Shape*s[],intn)
{doublesum=0.0;
for(inti=0;i<n;i++)sum+=s[
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年上海房屋裝修工程調(diào)解合同
- 2024年度二手房出售合同中的附件:房產(chǎn)證復(fù)印件及交易證明
- 2024年度承包合同園林綠化工程承包合同(04版)
- 2024年度汽車銷售代理權(quán)合同
- 保潔個(gè)人年終工作總結(jié)
- 2024年庫房火災(zāi)保險(xiǎn)合同
- 2024年奶制品銷售協(xié)議
- 2024雙方關(guān)于電商平臺運(yùn)營合作的合同
- 2024丙丁雙方廣告發(fā)布與代理合同
- 2024年建筑工程施工安全防護(hù)補(bǔ)充協(xié)議
- JTG∕T F30-2014 公路水泥混凝土路面施工技術(shù)細(xì)則
- 2024年高中語文學(xué)業(yè)水平過關(guān)測試四-名句名篇默寫積累過關(guān)訓(xùn)練(全國通用)學(xué)生版
- 糖尿病性舞蹈病
- 醫(yī)學(xué)類-教學(xué)查房異位妊娠(宮外孕)
- 眼視光技術(shù)職業(yè)生涯規(guī)劃大賽
- 《第八課 我的身體》參考課件
- 肥料創(chuàng)業(yè)計(jì)劃書
- 信息通信網(wǎng)絡(luò)運(yùn)行管理員(高級)理論考試題庫(學(xué)員用)
- 公司卷煙物流管理規(guī)范
- 報(bào)告醫(yī)療器械不良事件
- 物聯(lián)網(wǎng)安全分析報(bào)告
評論
0/150
提交評論