《面向?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頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、面向?qū)ο蟪绦蛟O(shè)計C+期末考試試卷(B)班級: 姓名: 學號: 分數(shù): 題號一二三四總分得分試卷說明:本套試題共四個大題,全部題目都答在答題紙上,寫在其他地方均無效。(答題紙在本套試卷的第8頁上)一、單項選擇題(每小題2分,共40分)1、關(guān)于C+與C語言關(guān)系的描述中,( D )是錯誤的。 AC語言是C+語言的一個子集 BC語言與C+語言是兼容的 CC+語言對C語言進行了一些改進 DC+語言和C語言都是面向?qū)ο蟮?、已知:int m=10; 下列表示引用的方法中,( A )是正確的。Aint &x=m; Bint &y=10; Cint &z; Dfloat &t=

2、&m;3、考慮下面的函數(shù)原型聲明:void testDefaulParam(int a,int b=7,char z='*');下面函數(shù)調(diào)用中,不合法的是( C )。AtestDefaulParam(5); BtestDefaulParam(5,8);CtestDefaulParam(5,'#'); DtestDefaulParam(0,0,'*');4、系統(tǒng)在調(diào)用重載函數(shù)時往往根據(jù)一些條件確定哪個重載函數(shù)被調(diào)用,在下列選項中,不能作為依據(jù)的是( A )。A函數(shù)的返回值類型 B參數(shù)的類型 C函數(shù)名稱 D參數(shù)個數(shù)5、下列有關(guān)C+類的說法中,

3、不正確的是( D )。A類是一種用戶自定義的數(shù)據(jù)類型B只有類中的成員函數(shù)或類的友元函數(shù)才能存取類中的私有成員C在類中,如果不做特別說明,所有成員的訪問權(quán)限均為私有的D在類中,如果不做特別說明,所有成員的訪問權(quán)限均為公用的6、已知X類,則當程序執(zhí)行到語句X array3;時,調(diào)用了( D )次構(gòu)造函數(shù)。A0 B1 C2 D37、有關(guān)析構(gòu)函數(shù)的說法,不正確的是( B )。A析構(gòu)函數(shù)有且僅有一個B析構(gòu)函數(shù)和構(gòu)造函數(shù)一樣可以有形參C析構(gòu)函數(shù)的功能是在系統(tǒng)釋放對象之前作一些內(nèi)存清理工作D析構(gòu)函數(shù)無任何函數(shù)類型8、類定義的內(nèi)容允許被其對象無限制地存取的是( C )。Aprivate 部分 B protec

4、ted 部分 Cpublic 部分 D以上都不對9、關(guān)于常數(shù)據(jù)成員的說法,不正確的是( )。A常數(shù)據(jù)成員的定義形式與一般常變量的定義形式相同,只不過常數(shù)據(jù)成員的定義必須出現(xiàn)在類體中B常數(shù)據(jù)成員必須進行初始化,并且不能被更新C常數(shù)據(jù)成員通過構(gòu)造函數(shù)的成員初始化列表進行初始化D常數(shù)據(jù)成員可以在定義時直接初始化10、運用運算符delete刪除一個動態(tài)對象時( )。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的

5、形式訪問派生類對象p的基類成員a,其中a是( D )。A私有繼承的公用成員 B公用繼承的私有成員C公用繼承的保護成員 D公用繼承的公用成員12、在公用繼承方式下,有關(guān)派生類對象和基類對象的關(guān)系,不正確的敘述是( )。A派生類的對象可以賦給基類的對象B派生類的對象可以初始化基類的引用C派生類的對象可以直接訪問基類中的成員D派生類的對象的地址可以賦給指向基類的指針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)造

6、函數(shù) C類的成員函數(shù) D以上都不對16、如果一個類至少有一個純虛函數(shù),那么就稱該類為( )。A抽象類 B派生類 C純基類 D以上都不對17、下面關(guān)于友元的描述中,錯誤的是( )。A友元函數(shù)可以訪問該類的私有數(shù)據(jù)成員B一個類的友元類中的成員函數(shù)都是這個類的友元函數(shù)C友元可以提高程序的運行效率D類與類之間的友元關(guān)系可以繼承18、下列運算符中,( )運算符在C+中不能被重載。A&& B C: Dnew19、模板的使用實際上是將類模板實例化成一個( )。A函數(shù) B對象 C類 D抽象類20、假定MyClass為一個類,則該類的拷貝構(gòu)造函數(shù)的聲明語句為( )。AMyClass(MyClas

7、s x) BMyClass&(MyClass x)CMyClass(MyClass &x) DMyClass(MyClass *x)二、填空題(前16個空,每空1分,后2個空,每空2分,共20分)1、類和對象的關(guān)系可表述為:類是對象的 ,而對象則是類的 。2、在C+中,三種繼承方式的說明符號為 、 和 ,如果不加說明,則默認的繼承方式為 。3、如果只想保留公共基類的一個復(fù)制,就必須使用關(guān)鍵字 把這個公共基類聲明為虛基類。4、若要把void fun()定義為類A的友元函數(shù),則應(yīng)在類A的定義中加入語句 。5、類的靜態(tài)成員分為 和 。6、運算符重載要求保持其原來的操作數(shù)個數(shù)、 、 和

8、語法結(jié)構(gòu)。7、通過關(guān)鍵字 可以聲明模板,通過關(guān)鍵字 指定函數(shù)模板的類型參數(shù),有幾個類型參數(shù)就有幾個類型關(guān)鍵字。8、列出C+中兩種用戶自定義的數(shù)據(jù)類型: 、 。9、構(gòu)造函數(shù)的作用是 。10、后置自增運算符“+”重載為類的成員函數(shù)(設(shè)類名為A)的形式為 。三、閱讀下面3個程序,寫出程序運行時輸出的結(jié)果:(共13分)1、#include<iostream >using namespace std;void fun(int &a,int &b) int p; p=a; a=b; b=p;void exchange(int &a,int &b,int &

9、;c) if(a<b)fun(a,b); if(a<c)fun(a,c); if(b<c)fun(b,c);int main() int a=12,b=89,c=56; exchange(a,b,c); cout<<"a="<<a<<",b="<<b<<",c="<<c<<endl; return 0;2、#include <iostream>using namespace std;class Date public: D

10、ate(int,int,int); Date(int,int); Date(int); Date(); void display(); private: int month, day, year; ; Date:Date(int m,int d,int y):month(m),day(d),year(y) Date:Date(int m,int d):month(m),day(d) year=2009; Date:Date(int m):month(m)day=1; year=2010; Date:Date() month=1; day=1; year=2010; void Date:disp

11、lay()cout<<month<<"/"<<day<<"/"<<year<<endl; int main() Date d1(12,31,2009); Date d2(12,31); Date d3(1); Date d4; d1.display(); d2.display(); d3.display(); d4.display(); return 0; 3、#include <iostream>using namespace std;class A public: A

12、()cout<<"constructing A "<<endl; A()cout<<"destructing A "<<endl;class B: public A public: B()cout<<"constructing B "<<endl; B()cout<<"destructing B "<<endl;class C : public B public: C()cout<<"constru

13、cting C "<<endl; C()cout<<"destructing C "<<endl;int main() C c1; return 0;四、編程題(共27分)1、(10分) 已知復(fù)數(shù)類Complex的聲明如下:class Complexpublic: Complex(); /無參構(gòu)造函數(shù) Complex(double ); /轉(zhuǎn)換構(gòu)造函數(shù)Complex(double, double);/有兩個形參的構(gòu)造函數(shù) friend Complex operator+(Complex&, Complex&);

14、/對“+”運算符進行重載 friend ostream& operator<<(ostream&, Complex&); /對“<<”運算符進行重載 friend istream& operator>>(istream&, Complex&); /對“>>”運算符進行重載private: double real,imag;要求:(1)寫出該類的所有構(gòu)造函數(shù)的類外定義代碼。 (2)寫出對運算符“+”、“<<”、“>>”進行重載的運算符重載函數(shù)的定義。2、(17分)下列Shape

15、類是一個表示形狀的抽象類,area( )為求圖形面積的函數(shù),total( )則是一個通用的用以求不同形狀的圖形面積總和的函數(shù)。class Shapepublic:virtual double area()=0;double total(Shape *s , int n) double sum=0.0; for(int i=0; i<n; i+)sum+=si->area( );return sum; 要求:(1)從Shape類派生圓類(Circle)、正方形類(Square),圓類新增數(shù)據(jù)成員半徑(radius),正方形類新增數(shù)據(jù)成員邊長(a),圓類和正方形類都有構(gòu)造函數(shù),修改、顯

16、示數(shù)據(jù)成員值的函數(shù),求面積函數(shù)。 (2)寫出main()函數(shù),計算半徑為5.5的圓和邊長為9.9的正方形的面積和(必須通過調(diào)用total函數(shù)計算)。面向?qū)ο蟪绦蛟O(shè)計C+期末考試試卷(B)標準答案班級: 姓名: 學號: 分數(shù): 題號一二三四總分得分一、單項選擇題(每小題2分,共40分)1-5D A C A D 6-10D B C D C 11-15D C B D B 16-20A D C C C二、填空題(前16個空,每空1分,后2個空,每空2分,共20分)1 抽象 、 實例 2 public 、 private _ _、 protected 、 private _ _3 virtual _ 4

17、 friend void fun(A &a) _5 靜態(tài)數(shù)據(jù)成員 、 靜態(tài)成員函數(shù) 6 結(jié)合性 、 優(yōu)先級_ _7 Template 、 class(或typename) 8 類 、 結(jié)構(gòu)體 _9 在創(chuàng)建對象時初始化對象的數(shù)據(jù)成員 _10 A operator+(int) _三、閱讀程序(共13分)1、a=89,b=56,c=122、12/31/2009 12/31/2009 1/1/2010 1/1/20103、constructing Aconstructing Bconstructing Cdestructing Cdestructing Bdestructing A四、編程題(

18、共27分)1、(10分)Complex:Complex()real=0;imag=0;Complex:Complex(double r)real=r;Complex:Complex(double r,double i)real=r;imag=i;Complex operator+(Complex &c1,Complex &c2) Complex c; c.real=c1.real+c2.real; c.imag=c1.imag+c2.imag; return c;ostream& operator << (ostream& output,Comple

19、x& c) output<<"("<<c.real<<"+"<<c.imag<<"i)"<<endl; return output; istream& operator >> (istream& input,Complex& c) cout<<"input real and imaginary part of complex number:" input>>c.real>

20、>c.imag; return input;2、(17分)class Circle:public Shapepublic: Circle(double r)radius=r; void set() cout<<"Please input the value of the circle:"<<endl;cin>>radius; void show() cout<<"the radius of the circle="<<radius<<endl; double area() re

21、turn 3.14159*radius*radius;private: double radius;class Square:public Shapepublic: Square(double a)this->a=a; void set() cout<<"Please input the value of a:"<<endl;cin>>a; void show() cout<<"a="<<a<<endl; double area()return a*a;private: dou

22、ble a;int main()Circle C(5.5);C.show();Square S(9.9);S.show();Shape *s=&C,&S;cout<<"total="<<total(s,2)<<endl;return 0;面向?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

23、)。 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”的作用是輸

24、出回車換行 C)“x”是一個變量 D)“<<”稱作提取運算符06、有如下類聲明,則類MyDERIVED中保護的數(shù)據(jù)成員和成員函數(shù)的個數(shù)是( )。 class MyBASE private: int k; public: void set(int n) k=n; int get( )const return k; ; class MyDERIVED: protected MyBASE protected: int j; public: void set(int m, int n) MyBASE:set(m); j=n; int get( ) const return MyBASE:g

25、et( )+j; ;A)4 B)3 C)2 D)107、已知在一個類體中包含如下函數(shù)原型: Volume operator-(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)#123 B)

26、123# C)*123 D)123*09、在下列函數(shù)原型中,可以作為類AA構(gòu)造函數(shù)的是(B )。 A)void AA(int); B)int AA(); C)AA(int)const; D)AA(int);10、下面四個選項中,( A)是用來聲明虛函數(shù)的。 A)virtual B)public C)include D)using namespace11、實現(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)v

27、irtual int vf(int); B)void vf(int)=0; C)virtual void vf()=0; D)virtual void vf(int)14、有如下類聲明:class XA private: int x; public: XA(int n) x=n; ; class XB: public XA private: int y; public: XB(int a,int b); ; 在構(gòu)造函數(shù)XB的下列定義中,正確的是( )。 A)XB:XB(int a,int b): x(a),y(b) B)XB:XB(int a,int b): XA(a),y(b) C)XB:X

28、B(int a,int b): x(a),XB(b) D)XB:XB(int a,int b): XA(a),XB(b) 15、在表達式 x+y*z中, + 是作為成員函數(shù)重載的運算符,* 是作為非成員函數(shù)重載的運算符。則 operator+ 有 個參數(shù),operator* 有 參數(shù)。( ) A)2、2 B)2、1 C)1、2 D)1、116、應(yīng)在下列程序劃線處填入的正確語句是( )。 class Base public: void fun()cout<<"Base:fun"<<endl; ;class Derived:public Base voi

29、d fun() /顯示調(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、派生類中的成員不能直接訪問基類

30、中的_私有、成員。20、在用class定義一個類時,數(shù)據(jù)成員和成員函數(shù)的默認訪問權(quán)限是私有。21、運算符重載函數(shù)可能是類的_友元_函數(shù),也可以是類的_成員_函數(shù),還可以是普通函數(shù)。22、用流對象的成員函數(shù)控制輸出格式時,用于設(shè)置字段寬度的流成員函數(shù)的名稱是_width_,與之作用相同的控制符名稱是_setw_。23、含有純虛函數(shù)的類稱為_抽象類。三、程序的填空、程序的執(zhí)行(每題4分,共20分。)24、以下程序是定義一個計數(shù)器類counter,對其重載運算符“+”,請?zhí)羁?。class counter private: int n; public: counter() n=0; counter(i

31、nt i)n=i; _ /運算符重載函數(shù) counter t; t.n=n+c.n; return t; void disp() cout<<"n="<<n<<endl;void main() counter c1(5),c2(10),c3; c3=c1+c2; c1.disp(); c2.disp(); c3.disp(); 25、下列程序的輸出結(jié)果為2,請將程序補充完整。class Base public: _ void fun() cout<<1; ;class Derived: public Base public:

32、void fun( ) cout<<2; ;int main( ) Base *p= new Derived; p->fun( ); delete p; return 0; 26、寫出執(zhí)行下面程序的輸出結(jié)果。void fun(int &x, int y) int t=x; x=y; y=t; int main( ) int a2 = 23, 42; fun(a1,a0); std:cout<<a0<<","<<a1<<std:endl; return 0; 27、寫出執(zhí)行下面程序的輸出結(jié)果。class

33、 A public: A() cout<<"A" ;class B public: B() cout<<"B" ;class C : public A B b; public: C() cout<<"C" ;int main( ) C obj; return 0; 28、寫出執(zhí)行下面程序的輸出結(jié)果。class Base private: char c; public: Base(char n):c(n) virtual Base()cout<<C; ; class Der:public

34、Base private: char c; public: Der(char n):Base(n+1),c(n) Der()cout<<C; ; int main() Der("X"); return 0; 四、編程題(12分)29、編寫一個程序計算“三角形、正方形、圓形”三種圖形的面積,要求:a)抽象出一個基類base;b)在其中說明一個虛函數(shù)用來求面積;c)利用派生類定義“三角形、正方形、圓形”;d)編寫主函數(shù)并測試。參考答案一、選擇題(每小題3分,共48分。)01-05 C A D B D06-10 B B A D A11-16 D A C B C C三、

35、程序的填空、程序的執(zhí)行(每題4分,共20分。)24、counter operator + (counter c)25、virtual26、23,2327、ABC28、XY四、編程題(12分)29、#include <iostream>using namespace std;class base public: virtual float area() const return 0; ;class triangle: public base protected: float bian,height; public: triangle(float a=0, float h=0) bia

36、n=a; height=h; virtual float area() const return bian*height/2; ;class square: public base protected: float bian; public: square(float a=0) bian=a; virtual float area() const return bian*bian; ;class circle: public base protected: float radius; public: circle(float r=0) radius=r; virtual float area(

37、) const return 3.14*radius*radius; ;int main() triangle t(3,4); square s(5); circle c(2); base *p; p=&t; cout<<"triangle's area:"<<p->area()<<endl; p=&s; cout<<"square's area:"<<p->area()<<endl; p=&c; cout<<"

38、;circle's area:"<<p->area()<<endl; return 0; 面向?qū)ο蟪绦蛟O(shè)計C+期末考試試卷(A)班級: 姓名: 學號: 分數(shù): 題號一二三四總分得分試卷說明:本套試題共四個大題,全部題目都答在答題紙上,寫在其他地方均無效。(答題紙在本套試卷的第10頁上)一、選擇題(每小題2分,共40分)1、C+是( )。 A. 面向?qū)ο蟮某绦蛟O(shè)計語言 B. 面向過程的程序設(shè)計語言 C. 既支持面向?qū)ο蟮某绦蛟O(shè)計又支持面向過程的程序設(shè)計的混合型語言 D. 非結(jié)構(gòu)化的程序設(shè)計語言2、面向?qū)ο蟪绦蛟O(shè)計思想的主要特征中不包括( )。A.

39、封裝性 B. 多態(tài)性 C. 繼承性 D. 功能分解,逐步求精3、若定義:string str; 當語句cin>>str; 執(zhí)行時,從鍵盤輸入:Microsoft Visual Studio 6.0!所得的結(jié)果是str=( )。A. Microsoft Visual Studio 6.0! B. MicrosoftC. Microsoft Visual D. Microsoft Visual Studio 6.04、考慮下面的函數(shù)原型聲明:void testDefaulParam(int a,int b=7,char z='*');下面函數(shù)調(diào)用中,不合法的是( )。A

40、. testDefaulParam(5); B. testDefaulParam(5,8);C. testDefaulParam(5,'#'); D. testDefaulParam(0,0,'*');5、下列語句中,將函數(shù)int sum(int x, int y)正確重載的是( )。A. float sum(int x, int y); B. int sum(int a, int b);C. float sum(float x, float y); D. double sum(int y, int x);6、下列表示引用的方法中,( )是正確的。已知:int

41、a=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+類的說法中,不正確的是( )。A. 類是一種用戶自定義的數(shù)據(jù)類型B. 只有類中的成員函數(shù)或類的友元函數(shù)才能存取類中的私有成員C. 在類中,如果不做特別說明,所有成員的訪問權(quán)限均為私有的D. 在類中,如果不做特別說明,所有成員的訪問權(quán)限均為公用的9、已知X類,則當程序

42、執(zhí)行到語句:X array3;時,調(diào)用了( )次構(gòu)造函數(shù)。A. 0 B. 1 C. 2 D. 310、下面說法中,正確的是( )A. 一個類只能定義一個構(gòu)造函數(shù),但可以定義多個析構(gòu)函數(shù)B. 一個類只能定義一個析構(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. void print( ) const; B. const void print( ); C. void c

43、onst print( ); D. void print(const);12、下面描述中,表達錯誤的是( ) A. 公用繼承時基類中的public成員在派生類中仍是public的B. 公用繼承時基類中的private成員在派生類中仍是private的C. 公用繼承時基類中的protected成員在派生類中仍是protected的D. 私有繼承時基類中的public成員在派生類中是private的13、設(shè)置虛基類的目的是( )。A. 簡化程序 B. 消除二義性 C. 提高運行效率 D. 減少目標代碼14、下面( )的敘述不符合賦值兼容規(guī)則。A. 派生類的對象可以賦值給基類的對象B. 基類的對象可

44、以賦值給派生類的對象C. 派生類的對象可以初始化基類的對象D. 派生類的對象的地址可以賦值給指向基類的指針15、關(guān)于虛函數(shù)的描述中,( )是正確的。 A. 虛函數(shù)是一個static類型的成員函數(shù) B. 虛函數(shù)是一個非成員函數(shù) C. 基類中說明了虛函數(shù)后,派生類中與其對應(yīng)的函數(shù)可不必說明為虛函數(shù) D. 派生類的虛函數(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ù)成員的說法,不正確的是

45、( )。A. 類中定義的公用靜態(tài)數(shù)據(jù)成員,可以通過類的對象來訪問B. 類中定義的所有靜態(tài)數(shù)據(jù)成員,都必須在類外初始化C. 靜態(tài)數(shù)據(jù)成員不是所有對象所共用的D. 普通的成員函數(shù)可以直接訪問類中的靜態(tài)數(shù)據(jù)成員18、如果表達式+i*k中的“+”和“*”都是重載的友元運算符,若采用運算符函數(shù)調(diào)用格式,則表達式還可以表示為( )。A. operator*(i.operator+(),k) B. operator*(operator+(i),k)C. i.operator+().operator*(k) D. k.operator*(operator+(i)19、下面對模板的聲明,正確的是( )。A. t

46、emplate<T> B. template<class T1, T2>C. template<class T1, class T2> D. template<class T1; class T2>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

47、中,A,B,C,D,E,F(xiàn)均是類,其中屬于單繼承的派生類有 ,屬于多繼承的派生類有 ,類F的基類有 ,類A的派生類有 。ABCDEF圖1 類的繼承層次圖4、如果只想保留公共基類的一個復(fù)制,就必須使用關(guān)鍵字 把這個公共基類聲明為虛基類。5、從實現(xiàn)的角度來講,多態(tài)性可以劃分為兩類: 和 。6、如果一個類包含一個或多個純虛函數(shù),則該類稱為 。7、若要把void fun()定義為類A的友元函數(shù),則應(yīng)在類A的定義中加入語句 。8、列出C+中的兩種代碼復(fù)用方式: 和 。9、析構(gòu)函數(shù)的作用是 。10、假定A是一個類名,則該類的拷貝構(gòu)造函數(shù)的原型說明語句為: 。11、后置自增運算符“+”重載為類的成員函數(shù)(設(shè)

48、類名為A)的形式為: 。三、閱讀下面4個程序,寫出程序運行時輸出的結(jié)果。(共13分)1、#include<iostream >using namespace std;void fun(int &a, int &b) int p; p=a; a=b; b=p;void exchange(int &a, int &b, int &c) if( a<b ) fun(a, b); if( a<c ) fun(a, c); if( b<c ) fun(b, c);int main() int a=12,b=89,c=56; excha

49、nge(a, b, c); cout<<"a="<<a<<",b="<<b<<",c="<<c<<endl; return 0;2、#include <iostream>using namespace std;class A public: A( ) cout << "A" ;class B public:B( ) cout <<"B" ;class C: public A p

50、ublic: C( ) cout << "C" private: B b;int main ( ) C obj; return 0; 3、#include <iostream>using namespace std;class Apublic:A()cout<<"A:A() called.n"virtual A()cout<<"A:A() called.n" class B: public Apublic:B(int i) cout<<"B:B() called.n"buf=new chari;virtual B() delete buf; cout<<"B:B() called.n"private:char *buf;int main() A *a=new B(15);de

溫馨提示

  • 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

提交評論