面向?qū)ο蠹夹g(shù)復(fù)習(xí)題匯總資料_第1頁
面向?qū)ο蠹夹g(shù)復(fù)習(xí)題匯總資料_第2頁
面向?qū)ο蠹夹g(shù)復(fù)習(xí)題匯總資料_第3頁
面向?qū)ο蠹夹g(shù)復(fù)習(xí)題匯總資料_第4頁
面向?qū)ο蠹夹g(shù)復(fù)習(xí)題匯總資料_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、面向?qū)ο蟪绦蛟O(shè)計C+復(fù)習(xí)資料與答案2009年 7月第一、二、六、七章習(xí)題一、選擇題1、系統(tǒng)約定C+源程序文件名的缺省的擴展名為(A、bcc B、c+ C、cpp D、vcc )2、面向?qū)ο蟮某绦蛟O(shè)計將數(shù)據(jù)與( )放在一起,作為一個相互依存、不可分割的整體來處理。A、對數(shù)據(jù)的操作 B、信息 C、數(shù)據(jù)隱藏3、當(dāng)一個函數(shù)無返回值時,函數(shù)的類型應(yīng)定義為(A、void B、任意 C、int D、無4、對于C+的函數(shù),正確的敘述是:A、函數(shù)的定義不能嵌套,但函數(shù)的調(diào)用可以嵌套B、函數(shù)的定義不能嵌套,但函數(shù)的調(diào)用不能嵌套C、函數(shù)的定義和調(diào)用都不能嵌套D、函數(shù)的定義和調(diào)用都可以嵌套5、下列語句中錯誤的是( )

2、A、int *p=new int(10); B、int *p=new int10C、int *p=new int; D、int *p=new int40(0);6、假設(shè)已經(jīng)有定義:const char *const name=”chen”;,下面的語句中正確的是:( )A、name3=a;、name=new char5; 、name=”lin”; 、coutname3; D、數(shù)據(jù)抽象 )7、假設(shè)已經(jīng)定義:char *const name=”chen”;, 下面的語句中正確的是:( )A、name3=q; 、name=”lin”;、name=new char5; 、name=new char(q

3、);8、假設(shè)已經(jīng)定義:const char *name=”chen”;, 下面的語句中錯誤的是:( )A、name3=q;、name=new char5; 、name=”lin”; 、name=new char(q);D、int i,*p=&i; 9、下面的類型聲明中正確的是:( ) A、int &a4; B、int &*p; C、int &q10、假設(shè)定義了函數(shù)模板( )template T max(T x,T y) return(xy)?x:y;并定義了int i;char c;錯誤的調(diào)用語句是:( )A、max(i,i) B、max(c,c) C、max(int)c,i);11、模板的使

4、用是為了( )A、提高代碼的可重用性 B、提高代碼的運行效率C、加強類的封裝性 D、實現(xiàn)多態(tài)性 D、max(i,c)12、設(shè)有二個語句:int xa;cinx;則編譯器認(rèn)為(A、說明語句int xa錯 B、二個語句都錯 )C、語句cinx 錯 D、二個語句正確,沒有語法錯13、設(shè)有語句:void f(int a10,int &x);int y10,*py=y,n;則對函數(shù)f的正確調(diào)用語句是( )A、f(py10,n); B、f(py,n) C、f(*py,&n)14、在C+中實現(xiàn)封裝是借助于( ) D、f(py,&n)A、枚舉 B、類 C、數(shù)組 D、函數(shù)15、對于下面幾個函數(shù):(1) void

5、 f(int x,float y) (2) int f(int a,float b) (3) int f(int i,int j) (4) float k(int x) 是重載函數(shù)。A、4個全部 B、1和2 C、2和3 D、3和416、使用myFile.open(“Sales.dat”,ios:app);語句打開文件Sales.dat后,則( )A、使輸出追加到文件尾部B、打開一個文件進行讀操作C、打開一個文件進行讀和寫操作D、文件以二進制方式打開,默認(rèn)時為文本文件二、填空題1、面向?qū)ο蟮某绦蛟O(shè)計有四大特征,它們是抽象、封裝、 、 。2、結(jié)構(gòu)體類型中的數(shù)據(jù)和成員函數(shù)默認(rèn)類型為。3、C+要求為每

6、個函數(shù)建立原型,以說明函數(shù)的名稱、參數(shù)的 和 ,以及函數(shù)返回值。4、在函數(shù)說明前加關(guān)鍵字“inline”,則該函數(shù)被聲明為消除函數(shù)調(diào)用時的開銷,以提高運行速度。5、引用變量與被引用變量占有內(nèi)存單元。6、運算符能夠用于訪問當(dāng)前作用域內(nèi)與局部變量同名的全局變量。7、#include void s(int a,int &b)int t=a;a=b;b=t;void main(void) int x=500,y=1000;coutxtyn;s(x,y);coutxtyn; 程序的第一行輸出為 ,第二行輸出為 。8、#include void main(void) for(int a=1,b=1;a=8

7、) break; if(b%2=1)b+=7;continue; b-=3; cout”a=”an”b=”bn;程序輸出結(jié)果是a= ,b= 。9、#include int x=100;void main(void) int x=200;x+=:x; int x=500;:x+=x; coutxn;cout:xn;程序的第一行輸出為 ,第二行輸出為 。10、#includevoid f(float x=5, int y=16, char z=C);void main( ) float a=1.6; int b=2; char c=D;f();f(a);f(a,b); f(a,b,c); void

8、 f(float x, int y, char z) cout“x=”x“ y=”y“ z=”zendl; 程序的第二行輸出為 ,第三行輸出為 。11、以下程序的輸出結(jié)果是 。#include char a=“ABCDEFGHI”;char &f(int);int main() f(6)=X; coutaendl; return 0;char &f(int i) return ai; 12、如果C+程序中使用了:cout、strcpy,則必須在程序首部包含文件 和 。13、#include #include void main() int i=7890; coutsetw(6)iendl; c

9、outiendl; 程序的第一行輸出為 ,第二行輸出為 。14、#include void main() int i=100;cout.setf(ios:hex); couti”t”;couti”t”;cout.setf(ios:dec);couti”n”;以上程序運行的結(jié)果是第三章 類和對象一、選擇題1、( )不是構(gòu)造函數(shù)的特征。A、構(gòu)造函數(shù)的函數(shù)名與類名相同;B、構(gòu)造函數(shù)可以重載;C、構(gòu)造函數(shù)可以設(shè)置缺省參數(shù);D、構(gòu)造函數(shù)必須指定類型說明。2、下列關(guān)于構(gòu)造函數(shù)的描述中,( )是正確的。A、構(gòu)造函數(shù)可以設(shè)置缺省參數(shù);B、構(gòu)造函數(shù)可以被繼承;C、構(gòu)造函數(shù)可以對靜態(tài)數(shù)據(jù)成員進行初始化;D、構(gòu)造函

10、數(shù)可以說明為虛函數(shù);3、( )是析構(gòu)函數(shù)的特征。A、析構(gòu)函數(shù)可以有一個或多個參數(shù);B、析構(gòu)函數(shù)名與類名不同;C、析構(gòu)函數(shù)的定義只能在類體內(nèi);D、一個類中只能定義一個析構(gòu)函數(shù);4、定義析構(gòu)函數(shù)時,應(yīng)該注意( )。A、其函數(shù)名與類名完全相同;B、函數(shù)返回類型是void類型;C、無形參,也不可重載;D、函數(shù)體中必須有delete語句;5、下列靜態(tài)數(shù)據(jù)成員的特性中,( )是錯誤的。A、說明靜態(tài)數(shù)據(jù)成員時前邊要加修飾符static;B、靜態(tài)數(shù)據(jù)成員要在類體外進行初始化;C、靜態(tài)數(shù)據(jù)成員不是所有對象所共用的;D、引用靜態(tài)數(shù)據(jù)成員時,要在其名稱前加和作用域運算符;6、友元的作用是( )。A、提高程序的運用效

11、率;B、加強類的封裝性;C、實現(xiàn)數(shù)據(jù)的隱藏性;D、增加成員函數(shù)的種類;7、關(guān)于成員函數(shù)特征的下列描述中,( )是錯誤的。A、成員函數(shù)一定是內(nèi)聯(lián)函數(shù);B、成員函數(shù)可以重載;C、成員函數(shù)可以設(shè)置缺省參數(shù)值;D、成員函數(shù)可以是靜態(tài)的;8、已知:print()函數(shù)是一個類的常成員函數(shù),它無返回值,下列表示中,(A、void print() const;B、const void print();C、void const print();D、void print(const);5 )是正確的;9、在( )情況下適宜采用inline定義內(nèi)聯(lián)函數(shù)。A、函數(shù)體含有循環(huán)語句;B、函數(shù)體含有遞歸語句;C、函數(shù)代碼小

12、,頻繁調(diào)用;D、函數(shù)代碼多,不常調(diào)用;10、假定AB為一個類,則執(zhí)行“AB a(4) , b3 , * p2 ;”語句時,自動調(diào)用該類構(gòu)造函數(shù)的次數(shù)為( )。A、 3 B、 4 C、 6 D、 911、通??截惓跏蓟瘶?gòu)造函數(shù)的參數(shù)是( )。A、某個對象名B、某個對象的成員名C、某個對象的引用名D、某個對象的指針名12、有關(guān)類的說法不正確的是( )。A、類是一種用戶自定義的數(shù)據(jù)類型B、只有類中的成員函數(shù)才能存取類中的私有數(shù)據(jù)C、在類中,如果不作特別說明,所有的數(shù)據(jù)均為私有類型D、在類中,如果不作特別說明,所有的成員函數(shù)均為公有類型13、在聲明類時,下面說法正確的的是( )。A、可以在類的聲明中給

13、數(shù)據(jù)成員賦初值B、數(shù)據(jù)成員的類型可以是registerC、public, private, protected這三種屬性的成員可以按任意順序出現(xiàn)D、沒有用public, private, protected定義的成員是公有成員14、已知:p是一個指向類A數(shù)據(jù)成員m的指針,A1是類A的一個對象。如果要給m賦值為5, ( )是正確的。A、A1.p=5B、A1-p=5C、A1.*p=5D、*A1.p=515、已知:類A中一個成員函數(shù)說明如下:void Set(A&a); 其中,A&a的含義是( )。A、指向類A的指針為aB、將a的地址值賦給變量SetC、a是類A的對象引用,用來作函數(shù)Set()的形參

14、D、變量A與a按位相與作為函數(shù)Set()的參數(shù)16、下列說明中const char *ptr; ptr應(yīng)該是( )。A、指向字符型常量的指針B、指向字符的常量指針C、指向字符變量的指針D、指向字符串的常量指針17、采用函數(shù)重載的目的在于:A、實現(xiàn)共享 B、減少空間C、提高速度 D、使用方便,提高可讀性18、有關(guān)類和對象的說法下列不正確的是( )。A、對象是類的一個實例B、任何一個對象只能屬于一個具體的類C、一個類只能有一個對象D、類與對象的關(guān)系和數(shù)據(jù)類型和變量的關(guān)系相似19、有以下類的說明,請指出錯誤的地方()。Class CSampleint a=2.5; ACSample(); Bpubl

15、ic:CSample(int val); CCSample(); D;20、在類的定義形式中,數(shù)據(jù)成員、成員函數(shù)和( )組成了類定義體。A、成員的訪問控制信息B、公有消息C、私有消息D、保護消息二、填空題1 通常的拷貝初始化構(gòu)造函數(shù)的參數(shù)是_2 在C+中函數(shù)參數(shù)的傳遞方式有三種,分別是:_、_和_。3 任何類中允許有三種訪問權(quán)限的數(shù)據(jù),這三種訪問權(quán)限分別是_、_和_。4 類中數(shù)據(jù)成員和成員函數(shù)的默認(rèn)類型為_5 在類內(nèi)部定義的_和_數(shù)據(jù)不能被不屬于該類的成員函數(shù)來存取,定義為_的數(shù)據(jù),可以在類外部進行存取。6 _是一種特殊的成員函數(shù),它主要用來為對象分配內(nèi)存空間,對類的數(shù)據(jù)成員進行初始化并執(zhí)行對

16、象的其他內(nèi)部管理操作。7 一個類中有_個析構(gòu)函數(shù)。8 _成員函數(shù)中不能直接引用類中說明的非靜態(tài)成員。9 已知類Sample 中的一個成員函數(shù)說明如下:void Set(Sample &a);其中,Sample &a的含意是_10靜態(tài)數(shù)據(jù)成員屬于類,可以使用_ 的方式訪問靜態(tài)的數(shù)據(jù)成員。11編譯程序?qū)his指針指向_。12以下程序的執(zhí)行結(jié)果是_。# include class Sample public:Sample () cout “constructore” endl; ;void fn (int i) static Sample c;cout “i=” i endl;void main

17、() fn (10) ;fn (20) ;13. 以下程序的執(zhí)行結(jié)果是_。# include class sample private:int n;static int k;public:sample(int i) n=i; k+; ;void disp();void sample: disp () coutn= n , k= k endl; int sample: k=0;void main () sample a(10), b(20), c(30) ;a.disp() ;b.disp();c.disp();14以下程序的執(zhí)行結(jié)果是_# include class sample int x;

18、public:void setx( int i ) x=i; int putx( ) return x; ;void main ( ) sample *p;sample A 3;A0.setx(5);A1.setx(6);A2.setx(7);for (int j=0 ; j3; j+ ) p= &A j ;coutputx( ) ;coutendl;15以下程序的執(zhí)行結(jié)果是_#includeclass A public:A( ) coutConstructing A n; A( ) coutDestructing A n;class B public:B( ) coutConstructin

19、g B n; B( )coutDestructing B n;main( ) A a;B b;return 0;三、編程題1. 定義一個圓類(Circle),屬性為半徑(radius)、圓周長和面積,操作為輸入半徑并計算周長、面積,輸出半徑、周長和面積。要求定義構(gòu)造函數(shù)(以半徑為參數(shù),缺省值為0,周長和面積在構(gòu)造函數(shù)中生成)和拷貝構(gòu)造函數(shù)。2. 設(shè)計一個學(xué)校在冊人員類(Person)。數(shù)據(jù)成員包括:身份證號(IdPerson),姓名(Name),性別(Sex),生日(Birthday)和家庭住址(HomeAddress)。成員函數(shù)包括人員信息的錄入和顯示。還包括構(gòu)造函數(shù)與拷貝構(gòu)造函數(shù)。設(shè)計一個

20、合適的初始值。第四章 派生類與繼承一、選擇1、 從一個基類派生出的各個類的對象之間 (1) 。A、共享所有數(shù)據(jù)成員,每個對象還包含基類的所有屬性B、共享部分?jǐn)?shù)據(jù)成員,每個對象還包含基類的所有屬性C、不共享任何數(shù)據(jù)成員,但每個對象還包含基類的所有屬性D、共享部分?jǐn)?shù)據(jù)成員和成員函數(shù)2、 C+的繼承性允許派生類繼承基類的 (2) 。A、部分特性,并允許增加新的特性或重定義基類的特性B、部分特性,但不允許增加新的特性或重定義基類的特性C、所有特性,并允許增加新的特性或重定義基類的特性D、所有特性,但不允許增加新的特性或重定義基類的特性3、 對于公有繼承,基類的公有和保護成員在派生類中將 (3) 成員。

21、A、全部變成公有 B、全部變成保護C、全部變成私有 D、仍然相應(yīng)保持為公有和保護4、建立包含有類對象成員的派生類對象時,自動調(diào)用構(gòu)造函數(shù)的執(zhí)行順序依次為 (4) 的構(gòu)造函數(shù)。A、自己所屬類、對象成員所屬類、基類B、對象成員所屬類、基類、自己所屬類C、基類、對象成員所屬類、自己所屬類D、基類、自己所屬類、對象成員所屬類5、派生類的對象對其基類中 (5) 可直接訪問。A、公有繼承的公有成員 B、公有繼承的私有成員C、公有繼承的保護成員 D、私有繼承的以有成員6、設(shè)類B是基類A的派生類,并有語句:A aa, * pa=&aa; B bb, * pb=&bb; 則正確的語句是_(6)_ 。A、pb=p

22、a; B、bb=aa; C、aa=bb; D、*pb=*pa;7、在公有派生情況下,有關(guān)派生類對象和基類對象的關(guān)系,不正確的敘述是 _ (7)_.A、派生類的對象可以賦給基類的對象B、派生類的對象可以初始化基類的引用C、派生類的對象可以直接訪問基類中的成員D、派生類的對象的地址可以賦給指向基類的指針8、若類X和類Y的定義如下:class X int a,b;public:void fx ( );;class Y: public X int c;public:void fy ( );void Y:fy ( ) c=a*b; 則上述代碼中, (8) 是非法的語句。A、void fx(); B、k=

23、a*b; C、void fy(); D、int c;9、如果一個派生類的基類不止一個,則這種繼承稱為_(9)_。A、單繼承 B、虛繼承 C、多態(tài)繼承 D、多重繼承10假定要對類AB定義加號操作符重載成員函數(shù),實現(xiàn)兩個AB類對象的加法,并返回相加結(jié)果,則該成員函數(shù)的聲明語句為: (10) 。A、 AB operator+(AB & a , AB & b) B、 AB operator+(AB & a)C、 operator+(AB a) D、 AB & operator+( )11、下面敘述不正確的是 (11) 。A、派生類可以使用private派生B、基類的public成員在派生類中仍然是pu

24、blicC、對基類成員的訪問必須是無二義性的D、賦值兼容原則也適合多重繼承的組合12、下面敘述不正確的是 (12) 。A、基類的protected成員在派生類中仍然是protectedB、基類的protected成員在public派生類中仍然是protectedC、基類的protected成員在private派生類中仍然是privateD、對基類成員的訪問必須是無二義性的13、下面敘述不正確的是 (13) 。A、成員的訪問能力在private派生類中和public派生類中仍是不同的B、基類的private成員在public派生類中不可訪問C、賦值兼容規(guī)則不適合于多重繼承的組合D、public基

25、類成員在protected派生中是protected14、下面敘述正確的是 (14) 。A、基類的對象可以賦給派生類B、只要是基類的對象,都可以賦給由它派生的任一個派生類對象C、只有該基類直接派生出來的類的對象才可以賦給該基類的對象D、公有派生類的對象可以賦給基類的對象15以下程序的輸出結(jié)果為是 (15) 。#includeclass A public:int n; ;class B:virtual public A;class C:virtual public A;class D:public B,public C int getn()return B:n; ;void main() D d

26、; d.B:n=10; d.C:n=20;coutd.B:n,d.C:nendl;A、10,20 B、20,20 C、10,10 D、輸出有二義性,不確定二、填空題1、在C+中派生類時,可以有 (1) 、 (2) 和 (3) 三種不同的方式。2、公有派生類不能訪問基類的 (4) 成員,但是派生類可以訪問基類的 (5) 成員和 (6) 成員。3、構(gòu)造函數(shù)不能被繼承,因此,派生類的構(gòu)造函數(shù)必須通過調(diào)用 (7)構(gòu)造函數(shù)進行初始化基類的對象。4、保護派生具有雙重作用:對 (8) ,具有公有性,對其他外部,具有(9) 。5、在多重派生中,要使公共基類在派生類中只有一個拷貝,必須將該基類說明為 (10)

27、。6、程序#includeclass Aprivate: int x;public:A(int x1) x=x1; void print() coutx=x;class B: private Aprivate: int y;public:B(int x1,int y1):A(x1) y=y1;A:print;void main() B b(20,10);b.print();程序輸出的結(jié)果為 (11) 。7、程序#includeclass A public: A(int i,int j)a=i;b=j;void move (int x,int y) a+=x;b+=y;void show() c

28、out (a,b)endl;private: int a,b;class B:private A public: B(int i,int j,int k,int l):A(i,j) x=k;y=l;void show() coutx,yendl;void fun()move(3,5); void f1()A:show();private: int x,y;void main() A e(1,2); e.show();B d(3,4,5,6); d.show(); d.fun(); d.f1();程序輸出的結(jié)果為 (12) , (13) , (14) 。8、程序#include class Lp

29、rotected:int x;public:L(int a)x=a;class X:public Lpublic:X(int a):L(a);int GetX()return x;class Y:public Lpublic:Y(int a):L(a);int GetX()return x;class Z:public X,public Ypublic:Z(int a):X(a+10),Y(a+20) ;void main() Z z(20);coutz.X:GetX()endl; coutz.Y:GetX()endl;L類成員int x ,Y類成員int GetX()return x;在Z類

30、中,分別具有什么屬性 (15) 和 (16) ;程序輸出結(jié)果的第一行是 (17) 。9、以下程序輸出第一行 (18) , 第二行 (19) 。#include class Apublic:virtual void print()coutmnn;class B:public Apublic:void print()coutopn;class C:public Apublic:void print(int S=0)coutsqprint();ap=&c; ap-print();10、指出下面程序段的錯誤行,并說明原因 (20) 。 (繼續(xù)派生,講解共有派生,但是基類函數(shù)非虛函數(shù)的情況)1 clas

31、s base 2 public: void pbase()coutbaseendl;3 ;4 class derive :private base5 public:void pderive()coutdervieendl;6 ;7 void main()8 base op1,*ptr;9 deiver op2;10 ptr=&op1;11 ptr=&op2;12 11、指出下面程序段的錯誤行,并說明原因 (21) 。1 class C 2 public: void pbase()coutbaseendl;3 ;4 class D:public base5 public:void pderive

32、()coutdervieendl;6 ;7 void main()8 C obj1;9 D obj2, *ptr;10 ptr=&obj1;11 ptr=&obj2;12 12、指出下面程序段的錯誤行,并說明原因 (22) 。1 class A 2 public: void print1()coutAendl;3 ;4 class B:public A5 public:void print2()coutBprint1(); ptr=&oo2; ptr-print1(); ptr-print2();三、編程題1、在下面基類Areaclass的基礎(chǔ)上建立兩個派生類Box (方形類)與Isoscel

33、es(等腰三角形類),每個派生類包含一個函數(shù)Area(),分別用于返回方形和等腰三角形的面積,并聲明對象,進行檢驗。class Areaclasspublic:Areaclass (double x=0, double y=0):height(x), width(y) protected:double height, width;2、定義一個類:圓,包含圓的半徑;定義構(gòu)造函數(shù);計算圓的面積。利用圓基類派生類:圓柱;定義構(gòu)造函數(shù);計算圓柱的體積。聲明對象,并且檢驗計算功能。第五章 多態(tài)性一、單選題1、 下列運算符中,_運算符在C+中不能重載。A、 ? : B、+ C、 D、 B、 C、 : D、

34、3、 在C+中,通常重載運算符的成員函數(shù)稱為_。A、運算符函數(shù) B、重載函數(shù)C、函數(shù)重載運算符 D、以上都不對4、 下列函數(shù)中,_不能重載。A、成員函數(shù) B、非成員函數(shù) C、析構(gòu)函數(shù) D、構(gòu)造函數(shù)5、 系統(tǒng)在調(diào)用重載函數(shù)時,往往根據(jù)一些條件確定哪個重載函數(shù)被調(diào)用,在下列選項中,不能作為依據(jù)的是_。A、參數(shù)的個數(shù) B、參數(shù)的類型C、參數(shù)的順序 D、函數(shù)的類型6、 下列對重載函數(shù)的描述中,_是錯誤的。A、重載函數(shù)中不允許使用默認(rèn)參數(shù)B、重載函數(shù)中編譯是根據(jù)參數(shù)表進行選擇的C、一般情況下,不要使用重載函數(shù)來描述毫無相干的函數(shù)D、構(gòu)造函數(shù)重載將會給初始化帶來多種方式7、 下列關(guān)于運算符重載的描述中,_

35、是正確的。A、運算符重載可以改變運算符的個數(shù)B、運算符重載可以改變優(yōu)先級C、運算符重載可以改變結(jié)合性D、運算符重載不可以改變語法結(jié)構(gòu)8、要實現(xiàn)動態(tài)聯(lián)編,派生類中的虛函數(shù)_。A、參數(shù)個數(shù)必須與函數(shù)的原型相同,參數(shù)類型可以與函數(shù)的原型不同B、參數(shù)類型必須與函數(shù)的原型相同,返回類型可以與函數(shù)的原型不同C、參數(shù)個數(shù)、類型和順序必須與函數(shù)的原型相同,返回類型必須與函數(shù)的原型相同 、以上都對9、關(guān)于虛函數(shù)的描述中,_是正確的。A、虛函數(shù)是一個static類型的成員函數(shù)B、虛函數(shù)是一個非成員函數(shù)C、基類中說明了虛函數(shù)后,派生類中對其對應(yīng)的函數(shù)可不必說明為虛函數(shù)D、派生類的虛函數(shù)與基類的虛函數(shù)具有不同的參數(shù)個

36、數(shù)和類型10、_是一個在基類中說明的虛函數(shù),它在該基類中沒有定義,但要求任何派生類都必須定義自己的版本。A、虛析構(gòu)函數(shù) B、虛構(gòu)造函數(shù)C、純虛函數(shù) D、靜態(tài)成員函數(shù)11、對于以下類定義,下面正確的敘述是 ( )class A public:virtual void func1( ) void func2( ) ;class B:public A public:void func1( )cout class B func 1 end1;virtual void func2( )cout class B func 2 end1; ;A、 A:func2( ) 和 B:func1( ) 都是虛函數(shù)B

37、、A:func2( ) 和 B:func1( ) 都不是虛函數(shù)C、B:func1( ) 是虛函數(shù),而 A:func2( ) 不是虛函數(shù)D、B:func1( ) 不是虛函數(shù),而 A:func2( ) 是虛函數(shù)12、假定要對類AB定義加號操作符重載成員函數(shù),實現(xiàn)兩個AB類對象的加法,并返回相加結(jié)果,則該成員函數(shù)的聲明語句為: 。A、AB operator+(AB & a , AB & b) B、AB operator+(AB & a)C、operator+(AB a) D、AB & operator+( )13、下面是對虛函數(shù)的的正確描述 。A、虛函數(shù)不能是友元函數(shù) B、構(gòu)造函數(shù)可以是虛函數(shù)C、析

38、構(gòu)函數(shù)不可以是虛函數(shù) D、虛函數(shù)可以靜態(tài)成員函數(shù)二、填空題1、 C+ 支持的兩種多態(tài)性分別是_多態(tài)性和_ 多態(tài)性。2、 靜態(tài)編聯(lián)通過 和 實現(xiàn),動態(tài)編聯(lián)通過 和 實現(xiàn)。3、 函數(shù)重載時,須符合 相同和 、 、 之一至少不同 四個條件4、運算符重載的兩種方法: 和 。5、以下程序的執(zhí)行結(jié)果是_。#includestatic int dys=31,28,31,30,31,30,31,31,30,31,30,31;class date int mo,da,yr;public:date(int m,int d,int y) mo=m; da=d; yr=y; date() void disp() co

39、utmo”/”da”/”yrdysdt.mo-1) day-=dysdt.mo-1;if(+dt.mo=13) dt.mo=1;dt.yr+;dt.da=day;return dt;void main() date d1(2,10,2001),d2;d2=d1+20;d2.disp();6、以下程序的執(zhí)行結(jié)果是_。 #includeclass base public:virtual void f1() cout”f1 function of base”endl; virtual void f2() cout”f2 function of base”endl; virtual void f3()

40、 cout”f3 function of base”endl; void f4() cout”f4 function of base”endl; ;class derive: public base void f1() cout”f1 function of derive”endl; void f2(int x) cout”f2 function of derive”endl; void f4() cout”f4 function of derive”f1(); p-f2(); p-f3();p=&obj2;p-f1(); p-f2(); p-f4();7、以下程序的執(zhí)行結(jié)果是_。 #incl

41、udeclass Sample private:int x;public:Sample() x=0; void disp() cout”x=”xendl; void operator+() x+=10; ;void main() Sample obj;obj.disp();obj+;cout”執(zhí)行obj+之后”endl;obj.disp();8、以下程序的執(zhí)行結(jié)果是_。 #includeclass Point public:Point() x=0; y=0; Point(unsigned x, unsigned y) Point:x=x;Point:y=y;unsigned getx() re

42、turn x; unsigned gety() return y; void print() cout”Point(“x”,”y”)”endl; friend Point operator+(Point &pt, int nOffset); friend Point operator+(int nOffset, Point &pt); private:unsigned x,y;Point operator+(Point &pt, int nOffset) Point ptemp=pt;ptemp.x+=nOffset;ptemp.y+=nOffset;return ptemp;Point op

43、erator+(int nOffset, Point &pt) Point ptemp=pt;ptemp.x+=nOffset;ptemp.y+=nOffset;return ptemp;void main() Point pt(10,20);pt.print()pt=pt+3; pt.print(); pt=3+pt; pt.print();9、下面程序意圖把base 和derived 中的fun1,fun2函數(shù)說明為虛函數(shù),從而利用base基類的指針實現(xiàn)動態(tài)聯(lián)編,是否正確,請解釋原因 。 #includeclass base public:virtual int fun1(int a,in

44、t b,int c)=0;float fun2(int d) ;class derived:public base public:; int fun1(int a,int b) return 0; virtual float fun2(int d) 三、編程題定義一個表示三維空間坐標(biāo)點的類,并對下列運算符重載。(1)、 :如果A點到原點的距離大于B點到原點的距離,則AB為真,否則為假。 20參考答案第一、二、六、七章習(xí)題答案一、選擇題:1、C 2、A 3、A 4、A6、D 7、A 8、A 9、D11、A 12、C 13、B 14、B16、A二、填空題1、 繼承、多態(tài)2、公有3、類型 個數(shù)4、內(nèi)

45、置5、相同的6、:7、500 1000500 5008、2 89、300 60010、x=1.6 y=16 z=CX=1.6 y=2 z=C11、ABCDEFXHI12、iostream.h string.h13、(兩個空格) 7890 789014、64 64 645、D 10、D 15、C 21第三章 類和對象一、選擇題1、D 2、A 3、D 4、C 5、C 6、A 7、A 8、A 9、C 10、B11、C 12、D 13、C 14、C 15、C 16、A 17、D 18、C 19、A 20、A二、填空題1 某個對象的引用2 值傳遞,地址傳遞,引用傳遞3 public, private,

46、protected4 私有或private5 Private, protected, public6 構(gòu)造函數(shù)7 18 靜態(tài)9 a 是類Sample 的對象引用,用來作函數(shù)Set ( )的形參10類名:11當(dāng)前對象的地址12 Constructori = 10i = 2013 n=10, k=3n=20, k=3n=30, k=314 5 6 715Constructing AConstructing BDestructing BDestructing A三、編程題1.解:通常所有數(shù)據(jù)成員都在構(gòu)造函數(shù)中賦初值??截悩?gòu)造函數(shù)以本類的引用為參數(shù)。 #include#includeclass Cir

47、cledouble r,Area,Circumference;public:Circle(double a=0);Circle(Circle &);void SetR(double R);double GetR()return r;22 double GetAreaCircle()return Area; double GetCircumference()return Circumference;Circle:Circle(double a)r=a;Area=r*r*3.14159265;Circumference=2*r*3.14159265;Circle:Circle(Circle & c

48、l) r=cl.r; Area=cl.Area; Circumference=cl.Circumference;void Circle:SetR(double R)r=R;Area=r*r*3.14159265; Circumference=2*r*3.14159265;void main()Circle cl1(2),cl2,cl3=cl1; cout圓半徑:cl3.GetR()t圓周長:cl3.GetCircumference() t圓面積:cl3.GetAreaCircle()endl; cl2.SetR(4); cout圓半徑:cl2.GetR()t圓周長:cl2.GetCircumference()t圓面積:cl2.GetAreaCircle()endl;2.#include#includeenum Tsexmid,man,woman;class Personchar IdPerson19; /身份證號,18位數(shù)字char Name20; /姓名T

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論