《面向?qū)ο蟪绦蛟O(shè)計(jì)C++》期末試卷及標(biāo)準(zhǔn)答案集總解析_第1頁
《面向?qū)ο蟪绦蛟O(shè)計(jì)C++》期末試卷及標(biāo)準(zhǔn)答案集總解析_第2頁
《面向?qū)ο蟪绦蛟O(shè)計(jì)C++》期末試卷及標(biāo)準(zhǔn)答案集總解析_第3頁
《面向?qū)ο蟪绦蛟O(shè)計(jì)C++》期末試卷及標(biāo)準(zhǔn)答案集總解析_第4頁
《面向?qū)ο蟪绦蛟O(shè)計(jì)C++》期末試卷及標(biāo)準(zhǔn)答案集總解析_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論