面向?qū)ο蟪绦蛟O(shè)計C_第1頁
面向?qū)ο蟪绦蛟O(shè)計C_第2頁
面向?qū)ο蟪绦蛟O(shè)計C_第3頁
面向?qū)ο蟪绦蛟O(shè)計C_第4頁
面向?qū)ο蟪绦蛟O(shè)計C_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

《面向?qū)ο蟪绦蛟O(shè)計C++》期末考試試卷(B)試卷說明:本套試題共四個大題,全部題目都答在答題紙上,寫在其他地方均無效。(答題紙在本套試卷的第8頁上)一、單項選擇題(每小題2分,共40分)1、 關(guān)于C++與C語言關(guān)系的描述中,(D)是錯誤的。C語言是C++語言的一個子集 B.C語言與C++語言是兼容的C.C++語言對C語言進行了一些改進 D.C++語言和C語言都是面向?qū)ο蟮?、 已知: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)。A.testDefaulParam(5); B.testDefaulParam(5,8);C.testDefaulParam(5,'#'); D.testDefaulParam(0,0,'*');4、 系統(tǒng)在調(diào)用重載函數(shù)時往往根據(jù)一些條件確定哪個重載函數(shù)被調(diào)用,在下列選項中,不能作為依據(jù)的是(A)。函數(shù)的返回值類型B.參數(shù)的類型 C.函數(shù)名稱D.參數(shù)個數(shù)5、 下列有關(guān)C++類的說法中,不正確的是(D).類是一種用戶自定義的數(shù)據(jù)類型只有類中的成員函數(shù)或類的友元函數(shù)才能存取類中的私有成員在類中,如果不做特別說明,所有成員的訪問權(quán)限均為私有的在類中,如果不做特別說明,所有成員的訪問權(quán)限均為公用的6、 已知X類,則當程序執(zhí)行到語句Xarray[3];時,調(diào)用了(D)次構(gòu)造函數(shù)。A.0 B.1 C.2 D.37、有關(guān)析構(gòu)函數(shù)的說法,不正確的是(B)。析構(gòu)函數(shù)有且僅有一個析構(gòu)函數(shù)和構(gòu)造函數(shù)一樣可以有形參析構(gòu)函數(shù)的功能是在系統(tǒng)釋放對象之前作一些內(nèi)存清理工作析構(gòu)函數(shù)無任何函數(shù)類型8、類定義的內(nèi)容允許被其對象無限制地存取的是( C)。A.private部分B.protected部分C.public部分 D.以上都不對9、關(guān)于常數(shù)據(jù)成員的說法,不正確的是( )。常數(shù)據(jù)成員的定義形式與一般常變量的定義形式相同,只不過常數(shù)據(jù)成員的定義必須出現(xiàn)在類體中常數(shù)據(jù)成員必須進行初始化,并且不能被更新常數(shù)據(jù)成員通過構(gòu)造函數(shù)的成員初始化列表進行初始化常數(shù)據(jù)成員可以在定義時直接初始化10、 運用運算符delete刪除一個動態(tài)對象時( )。系統(tǒng)首先為該動態(tài)對象調(diào)用構(gòu)造函數(shù),再釋放其占用的內(nèi)存系統(tǒng)首先釋放該動態(tài)對象占用的內(nèi)存,再為其調(diào)用構(gòu)造函數(shù)系統(tǒng)首先為該動態(tài)對象調(diào)用析構(gòu)函數(shù),再釋放其占用的內(nèi)存系統(tǒng)首先釋放動態(tài)對象占用的內(nèi)存,再為其調(diào)用析構(gòu)函數(shù)11、 可以在類外用p.a的形式訪問派生類對象p的基類成員a,其中&是(D)。A.私有繼承的公用成員 B.公用繼承的私有成員C.公用繼承的保護成員 D.公用繼承的公用成員12、在公用繼承方式下,有關(guān)派生類對象和基類對象的關(guān)系,不正確的敘述是( )派生類的對象可以賦給基類的對象派生類的對象可以初始化基類的引用派生類的對象可以直接訪問基類中的成員派生類的對象的地址可以賦給指向基類的指針13、設(shè)置虛基類的目的是(B)。A.簡化程序 B.消除二義性C.提咼運行效率D.減少目標代碼14、在C++中,用于實現(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、如果一個類至少有一個純虛函數(shù),那么就稱該類為()。A.抽象類 B.派生類C.純基類D.以上都不對17、下面關(guān)于友元的描述中,錯誤的是( )。友元函數(shù)可以訪問該類的私有數(shù)據(jù)成員—個類的友元類中的成員函數(shù)都是這個類的友元函數(shù)友兀可以提咼程序的運行效率類與類之間的友元關(guān)系可以繼承18、下列運算符中,( )運算符在C++中不能被重載。A.&& B.[] C.:: D.newTOC\o"1-5"\h\z19、 模板的使用實際上是將類模板實例化成一個( )。A.函數(shù) B.對象 C.類 D.抽象類20、假定MyClass為一個類,則該類的拷貝構(gòu)造函數(shù)的聲明語句為( )。A.MyClass(MyClassx) B.MyClass&(MyClassx)C.MyClass(MyClass&x) D.MyClass(MyClass*x)二、填空題(前16個空,每空1分,后2個空,每空2分,共20分)1、類和對象的關(guān)系可表述為:類是對象的 ,而對象則是類的 。2、在C++中,三種繼承方式的說明符號為 、 和 ,如果不加說明,則默認的繼承方式為 .3、如果只想保留公共基類的一個復(fù)制,就必須使用關(guān)鍵字 把這個公共基類聲明為虛基類。4、 若要把voidfun()定義為類A的友元函數(shù),則應(yīng)在類A的定義中加入語句 。5、類的靜態(tài)成員分為 和 .6、運算符重載要求保持其原來的操作數(shù)個數(shù)、 、 和語法結(jié)構(gòu)。7、通過關(guān)鍵字 可以聲明模板,通過關(guān)鍵字 指定函數(shù)模板的類型參數(shù),有幾個類型參數(shù)就有幾個類型關(guān)鍵字。TOC\o"1-5"\h\z8、列出C++中兩種用戶自定義的數(shù)據(jù)類型: 、 .9、構(gòu)造函數(shù)的作用是 .10、后置自增運算符“++"重載為類的成員函數(shù)(設(shè)類名為A)的形式為 .三、閱讀下面3個程序,寫出程序運行時輸出的結(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〈<",c=”<<c〈<endl;return0;}2、#include<iostream〉usingnamespacestd;classDate{public:Date(int,int,int);Date(int,int);Date(int);Date();voiddisplay();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=l; year=2010; }Date::Date() {month=1;day=1;year=2010;}voidDate::display(){cout<<month〈<"/”<<day〈<”/"<〈year〈〈endl;}intmain(){Dated1(12,31,2009);Dated2(12,31);Dated3(1);Dated4;d1。display。;d2.display();d3。display();d4.display();return0; }3、#include〈iostream>usingnamespacestd;classA{public:A(){cout〈《"constructingA”<<endl;}?A(){cout〈〈''destructingA”〈〈endl;}};classB:publicA{public:B(){cout〈〈'constructingB'<<endl;}?B(){cout〈〈"destructingB"〈<endl;}};classC:publicB{public:C(){cout<〈"constructingC'<<endl;}?C(){cout〈<"destructingC'<〈endl;}};intmain(){Cc1;return0;}四、編程題(共27分)1、(10分)已知復(fù)數(shù)類Complex的聲明如下:classComplex{public:Complex(); //無參構(gòu)造函數(shù)Complex(double); //轉(zhuǎn)換構(gòu)造函數(shù)Complex(double,double);〃有兩個形參的構(gòu)造函數(shù)friendComplexoperator+(Complex&,Complex&); //對“+”運算符進行重載friendostream&operator<〈(ostream&,Complex&); //對“〈<”運算符進行重載friendistream&operator>>(istream&,Complex&); //對“〉〉”運算符進行重載private:doublereal,imag;};要求:(1)寫出該類的所有構(gòu)造函數(shù)的類外定義代碼。(2)寫出對運算符“+”、“〈〈”、“〉〉"進行重載的運算符重載函數(shù)的定義。2、(17分)下列Shape類是一個表示形狀的抽象類,area()為求圖形面積的函數(shù),total()則是一個通用的用以求不同形狀的圖形面積總和的函數(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ù),計算半徑為5.5的圓和邊長為9。9的正方形的面積和(必須通過調(diào)用total函數(shù)計算)。

《面向?qū)ο蟪绦蛟O(shè)計C++》期末考試試卷(B)標準答案一、單項選擇題(每小題2分,共40分)1—5.DACAD 6—10.DBCDC11-15.DCBDB 16—20.ADCCC二、填空題(前16個空,每空1分,后2個空,每空2分,共20分)1.抽象 、實例2.public 、 private 、protected、 private3.virtual 4.friendvoidfun(A&a)—結(jié)合性 、優(yōu)先級5.靜態(tài)數(shù)據(jù)成貝、靜態(tài)成貝函數(shù) 6.7.Template、class(或typename) 8.類、 結(jié)構(gòu)體9.在創(chuàng)建對象時初始化對象的數(shù)據(jù)成員10.Aoperator++(int)三、閱讀程序(共13分)1、a=89,b=56,c=122、12/31/200912/31/20091/1/20101/1/20103、constructingAconstructingBconstructingCdestructingCdestructingBdestructingA四、編程題(共27分)1、(10分)Complex::Complex(){real=0;imag=0;}Complex::Complex(doubler){real=r;}Complex::Complex(doubler,doublei){real=r;imag=i;}Complexoperator+(Complex&c1,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<<”+"<<c.imag〈<"i)”<〈endl;returnoutput;}istream&operator>〉(istream&input,Complex&c){coutvv"inputrealandimaginarypartofcomplexnumber:";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<<"a=”〈<a〈〈endl; }doublearea(){returna*a;}private:doublea;};intmain(){CircleC(5.5)C.show();SquareS(9。9);S.show();Shape*s[]={&C,&S};cout<<”total="<<t(otsa,l2)<〈endl;return0;《面向?qū)ο蟪绦蛟O(shè)計C++》期末考試試卷一、選擇題(每小題3分,共48分.)01、下列關(guān)于C++函數(shù)的敘述中,正確的是(c)。A)每個函數(shù)至少要具有一個參數(shù) B)每個函數(shù)都必須返回一個值C)函數(shù)在被調(diào)用之前必須先聲明 D)函數(shù)不能自己調(diào)用自己02、下列關(guān)于類和對象的敘述中,錯誤的是(A)。A)一個類只能有一個對象 B)對象是類的具體實例C)類是對某一類對象的抽象 D)類和對象的關(guān)系是一種數(shù)據(jù)類型與變量的關(guān)系03、在C++中,用于實現(xiàn)運行時多態(tài)性的是(D)。A)內(nèi)聯(lián)函數(shù) B)重載函數(shù) C)模板函數(shù)D)虛函數(shù)04、下列關(guān)于運算符重載的敘述中,正確的是(B)。A)通過運算符重載,可以定義新的運算符 B)有的運算符只能作為成員函數(shù)重載C)若重載運算符+,則相應(yīng)的運算符函數(shù)名是+D)重載二元運算符時,必須聲明兩個形參05、對于語句cout〈〈x〈〈endl;錯誤的是描述是(D )。A)“cout”是一個輸出流對象B)“endl”的作用是輸出回車換行C)“x”是一個變量 D)“〈〈”稱作提取運算符TOC\o"1-5"\h\z06、有如下類聲明,則類MyDERIVED中保護的數(shù)據(jù)成員和成員函數(shù)的個數(shù)是( )。classMyBASE{private: int k;public: void set(int n) { k=n;}intget()const{returnk;} };classMyDERIVED:protectedMyBASE{protected:intj;public:voidset(intm,intn){MyBASE::set(m);j=n;}intget()const{returnMyBASE::get()+j;}};A)4 B)3 C)2 D)107、已知在一個類體中包含如下函數(shù)原型:Volumeoperator-(Volume)const;,下列關(guān)于這個函數(shù)的敘述中,錯誤的是(B)。A)這是運算符一的重載運算符函數(shù) B)這個函數(shù)所重載的運算符是一個一元運算符C)這是一個成員函數(shù) D)這個函數(shù)不改變類的任何數(shù)據(jù)成員的值08、執(zhí)行如下的程序段后,輸出結(jié)果是(C)。cout。fill('*');cout.width(6);cout°fill('#');cout<〈123〈〈endl;A)###123B)123###C)***123D)123***09、在下列函數(shù)原型中,可以作為類AA構(gòu)造函數(shù)的是(B)。A)voidAA(int);B)intAA();C)AA(int)const;D)AA(int);10、 下面四個選項中,(A)是用來聲明虛函數(shù)的.A)virtualB)publicC)includeD)usingnamespace11、 實現(xiàn)運行時的多態(tài)性要使用(D )。A)重載函數(shù)B)構(gòu)造函數(shù)C)析構(gòu)函數(shù)D)虛函數(shù)12、 要實現(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的下列定義中,正確的是()。A)XB::XB(inta,intb):x(a),y(b){}B)XB::XB(inta,intb): XA(a),y(b){}C)XB::XB(inta,intb): x(a),XB(b){}D)XB::XB(inta,intb):XA(a),XB(b){}15、 在表達式x+y*z中,+是作為成員函數(shù)重載的運算符,TOC\o"1-5"\h\z伙是作為非成員函數(shù)重載的運算符。則operator+有 個參數(shù),operator*有參數(shù)。( )A)2、2 B)~2、1C)1、2 D)1、116、 應(yīng)在下列程序劃線處填入的正確語句是( )。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、 面向?qū)ο蟪绦蛟O(shè)計有四個主要特點,即抽象、封裝、_多態(tài)性—和—繼承性—。 —18、 非成員函數(shù)應(yīng)聲明為類的—友元—函數(shù)才能訪問這個類的private成員。19、 派生類中的成員不能直接訪問基類中的_私有、成員。20、 在用class定義一個類時,數(shù)據(jù)成員和成員函數(shù)的默認訪問權(quán)限是私有.21、 運算符重載函數(shù)可能是類的—友元—函數(shù),也可以是類的—成員—函數(shù),還可以是普通函22、 用流對象的成員函數(shù)控制輸出格式時,用于設(shè)置字段寬度的流成員函數(shù)的名稱是_width ,與之作用相同的控制符名

稱是__setw__。23、含有純虛函數(shù)的類稱為—抽象類。三、程序的填空、程序的執(zhí)行(每題4分,共20分.)24、以下程序是定義一個計數(shù)器類counter,對其重載運算符“+”,請?zhí)羁?。classcounter24、以下程序是定義一個計數(shù)器類counter,對其重載運算符“+”,請?zhí)羁?。classcounter{private:intn;public:counter() {n=0;}counter(inti){n=i;}—//運算符重載函數(shù){countert;t。n二n+c。n;returnt;}voiddisp(){cout〈〈”n二"〈〈n〈〈endl;}};voidmain(){countercl(5),c2(10),c3;c3=c1+c2;c1.disp();c2.disp();c3。disp();}26、寫出執(zhí)行下面程序的輸出結(jié)果。voidfun(int&x,inty){intt二x;x=y;y二t;}intmain()25、下列程序的輸出結(jié)果為2,請將程序補充完整。classBase{public: voidfun(){cout〈〈1;}};classDerived:publicBase{public:voidfun() {cout〈〈2;}};intmain(){Base*p=newDerived;p->fun();deletep;return0; }28、寫出執(zhí)行下面程序的輸出結(jié)果.classBase{private:charc;{intaL2]={23, 42};public:fun(a[l],a[0]);Base(charn):c(n){}std::cout〈〈a[0]〈〈“,”virtual~Base(){cout〈〈a[l]<〈std::endl;〈〈C;}return0; }};classDer:publicBase27、寫出執(zhí)行下面程序的輸{private:出結(jié)果。charc;classA{public:A()public:{cout〈〈"A";} };Der(charn):Base(n+l),classB{public:B()c(n){}{cout〈〈"B”;}};?Der(){cout〈〈C;}classC:publicA};{Bb;intmain()public:C() {cout〈〈”C”; }};{Der("X”); return0;}intmain() {Cobj;return0; }四、編程題(12分)29、編寫一個程序計算“三角形、正方形、圓形"三種圖形的面積,要求:a)抽象出一個基類base;b)在其中說明一個虛函數(shù)用來求面積;c)利用派生類定義“三角形、正方形、圓形";d)編寫主函數(shù)并測試。參考答案一、選擇題(每小題3分,共48分.)01-05CADBD06—10BBADA11—16DACBCC三、程序的填空、程序的執(zhí)行(每題4分,共20分。)24、counteroperator+(counterc)25、virtual26、23,2327、ABC28、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^radiusradius;}};intmain(){trianglet(3,4);squares(5);circlec(2);base*p;p=&t;cout<<"triangle'sarea:”〈〈p—〉area()<〈endl;p=&s;cout<〈”square's area:”<〈p—>area()〈〈endl;p=&c;cout<<"circle'sarea:”〈〈p->area()〈<endl;return0;《面向?qū)ο蟪绦蛟O(shè)計C++》期末考試試卷(A)試卷說明:本套試題共四個大題,全部題目都答在答題紙上,寫在其他地方均無效.(試卷說明:本套試題共四個大題,全部題目都答在答題紙上,寫在其他地方均無效.(答題紙在本套試卷的第10頁上)一、選擇題(每小題2分,共40分)1、 C++是().面向?qū)ο蟮某绦蛟O(shè)計語言B。 面向過程的程序設(shè)計語言既支持面向?qū)ο蟮某绦蛟O(shè)計又支持面向過程的程序設(shè)計的混合型語言D。 非結(jié)構(gòu)化的程序設(shè)計語言2、面向?qū)ο蟪绦蛟O(shè)計思想的主要特征中不包括( )。A.封裝性B.多態(tài)性 C。繼承性 D。功能分解,逐步求精3、若定義:stringstr;當語句cin〉〉str;執(zhí)行時,從鍵盤輸入:MicrosoftVisualStudio6.0!所得的結(jié)果是str=()。B.MicrosoftD.MicrosoftVisualStudio6。0A。 MicrosoftVisualStudioB.MicrosoftD.MicrosoftVisualStudio6。0C。MicrosoftVisual4、 考慮下面的函數(shù)原型聲明:voidtestDefaulParam(inta,intb=7,charz='*');下面函數(shù)調(diào)用中,不合法的是( )。testDefaulParam(5); B.testDefaulParam(5,8);C。testDefaulParam(5,'#'); D。testDefaulParam(0,0,'*');5、下列語句中,將函數(shù)intsum(intx,inty)正確重載的是( )。

A。A。floatsum(intx,inty);C。floatsum(floatx,floaty);intsum(inta,intb);D.doublesum(inty,intx);6、下列表示引用的方法中,( )是正確的.已知:inta=1000;A.int&x=a; B。char&y; C.int&z=1000; D。float&t=&a;7、在一個函數(shù)中,要求通過函數(shù)來實現(xiàn)一種不太復(fù)雜的功能,并且要求加快執(zhí)行速度,選用( )。A。 內(nèi)聯(lián)函數(shù) B。重載函數(shù) C。遞歸調(diào)用 D。嵌套調(diào)用8、 下列有關(guān)C++類的說法中,不正確的是( )。類是一種用戶自定義的數(shù)據(jù)類型只有類中的成員函數(shù)或類的友元函數(shù)才能存取類中的私有成員在類中,如果不做特別說明,所有成員的訪問權(quán)限均為私有的在類中,如果不做特別說明,所有成員的訪問權(quán)限均為公用的9、已知X類,則當程序執(zhí)行到語句:Xarray[3];時,調(diào)用了( )次構(gòu)造函數(shù)。A.0 B.1 C。2 D.310、下面說法中,正確的是( )一個類只能定義一個構(gòu)造函數(shù),但可以定義多個析構(gòu)函數(shù)一個類只能定義一個析構(gòu)函數(shù),但可以定義多個構(gòu)造函數(shù)C。 構(gòu)造函數(shù)與析構(gòu)函數(shù)同名,只要名字前加了一個求反符號(~)D。 構(gòu)造函數(shù)可以指定返回類型,而析構(gòu)函數(shù)不能指定任何返回類型,即使是void類型也不可以11、 已知:print()函數(shù)是一個類的常成員函數(shù),它無返回值,下列表示中,( )是正確的。A.voidprint()const; B.constvoidprint();C。 voidconstprint(); D。voidprint(const);12、下面描述中,表達錯誤的是( )A.公用繼承時基類中的public成員在派生類中仍是public的B。公用繼承時基類中的private成員在派生類中仍是private的C.公用繼承時基類中的protected成員在派生類中仍是protected的D。私有繼承時基類中的public成員在派生類中是private的13、設(shè)置虛基類的目的是( )。A。 簡化程序B.消除二義性C.提高運行效率D.減少目標代碼14、下面( )的敘述不符合賦值兼容規(guī)則.A。 派生類的對象可以賦值給基類的對象B。 基類的對象可以賦值給派生類的對象派生類的對象可以初始化基類的對象派生類的對象的地址可以賦值給指向基類的指針15、關(guān)于虛函數(shù)的描述中,( )是正確的。虛函數(shù)是一個static類型的成員函數(shù)虛函數(shù)是一個非成員函數(shù)基類中說明了虛函數(shù)后,派生類中與其對應(yīng)的函數(shù)可不必說明為虛函數(shù)派生類的虛函數(shù)與基類的虛函數(shù)具有不同的參數(shù)個數(shù)和類型16、下面關(guān)于友元的描述中,錯誤的是( )。A。 友元函數(shù)可以訪問該類的私有數(shù)據(jù)成員B。 一個類的友元類中的成員函數(shù)都是這個類的友元函數(shù)C。 友元可以提高程序的運行效率D。 類與類之間的友元關(guān)系可以繼承17、下列關(guān)于靜態(tài)數(shù)據(jù)成員的說法,不正確的是( )。類中定義的公用靜態(tài)數(shù)據(jù)成員,可以通過類的對象來訪問類中定義的所有靜態(tài)數(shù)據(jù)成員,都必須在類外初始化靜態(tài)數(shù)據(jù)成員不是所有對象所共用的普通的成員函數(shù)可以直接訪問類中的靜態(tài)數(shù)據(jù)成員18、如果表達式++i*k中的“++”和“*”都是重載的友元運算符,若采用運算符

函數(shù)調(diào)用格式,則表達式還可以表示為(A函數(shù)調(diào)用格式,則表達式還可以表示為(A。operator*(i。operator++(),k)C.iooperator++()。operator*(k)19、下面對模板的聲明,正確的是( )A。template<T〉).operator*(operator++(i),k)D。 k.operator*(operator++(i))B.template<classT1,T2〉C。 template〈classT1,classT2〉 D。 template<classT1;classT2>20、下列的各類函數(shù)中,( )不是類的成員函數(shù)A。構(gòu)造函數(shù)B。析構(gòu)函數(shù)C。友元函數(shù)D.復(fù)制構(gòu)造函數(shù)二、填空題(前14個空,每空1分,后3個空,每空2分,共20分)1、類和對象的關(guān)系可表述為:類是對象的 ,而對象則是類的 。2、靜態(tài)成員函數(shù)沒有隱含的 ,所以,在C++程序中,靜態(tài)成員函數(shù)主要用來訪問靜態(tài)數(shù)據(jù)成員,而不訪問非靜態(tài)成員。3、在圖1中,A,B,C,D,E,F均是類,其中屬于單繼承的派生類有 ,屬于多繼承的派生類有 ,類F的基類有 ,類A的派生類有 。ABCABC圖1類的繼承層次圖4、如果只想保留公共基類的一個復(fù)制,就必須使用關(guān)鍵字 把這個公共基類聲明為虛基類.TOC\o"1-5"\h\z5、從實現(xiàn)的角度來講,多態(tài)性可以劃分為兩類: 和 .6、如果一個類包含一個或多個純虛函數(shù),則該類稱為 。7、 若要把voidfun()定義為類A的友元函數(shù),則應(yīng)在類A的定義中加入語句 .8、列出C++中的兩種代碼復(fù)用方式: 和 。9、 析構(gòu)函數(shù)的作用是 10、 假定A是一個類名,則該類的拷貝構(gòu)造函數(shù)的原型說明語句為: 11、 后置自增運算符“++”重載為類的成員函數(shù)(設(shè)類名為A)的形式為: 三、閱讀下面4個程序,寫出程序運行時輸出的結(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〈〈”,c=”<<c〈〈endl;return0;}2、#include〈iostream>usingnamespacestd;classA{public:A() {cout<〈"A";}};classB{public:B() {cout<〈"B”; }};classC:publicA{public:C() {cout〈〈”C";}private:Bb;};intmain() {Cobj;return0;}3、#include<iostream〉usingnamespacestd;classA{public:A(){coutvv"A::A()called。\n";}virtual~A(){cout〈〈"A::?A()calledAn”;}};classB:publicA{public:B(inti){cout<<”B::B()called。\n";buf=newchar[i];}virtual~B(){delete[]buf;cout〈〈”B::?B()called。\n”;}private:char*buf;};intmain(){A*a=newB(15);deletea;return0;}4、#include<iostream〉usingnamespacestd;classA{public:voidf(){cout<<”CallA'sfunctionf()”〈〈endl;}};classB{public:voidf() {coutvv"CallB'sfunctionf()"〈vendl;}voidg(){cout〈〈"CallB'sfunctiong()"〈〈endl;}};classC:publicA,publicB{public:voidg(){cout<<”CallC'sfunctiong()"〈vendl;};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òu)造函數(shù)friendComplexoperator+(Complex&,Complex&); //對“+”運算符進行重載friendostream&operatorv〈(ostream&.Complex&); 〃對“〈<"運算符進行重載friendistream&operator>>(istream&,Complex&);//對“>>”運算符進行重載private:doublereal,imag;};要求:(1)寫出該類的所有構(gòu)造函數(shù)的類外定義代碼。(2)寫出對運算符“+”、“<〈”、“〉〉”進行重載的運算符重載函數(shù)的定義。2、(17分)下列Shape類是一個表示形狀的抽象類,area()為求圖形面積的函數(shù),total()則是一個通用的用以求不同形狀的圖形面積總和的函數(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),正

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論