




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、2002級C+面向?qū)ο蟪绦蛟O計試題(A卷)(滿分:100分)一、單項選擇(每題1分,共10分) 1. 下面列出的基類中的哪部分能被派生類自動繼承:A. 基類中的構造函數(shù) B. 基類中的虛析構函數(shù)C. 基類中重載的賦值操作 D. 基類中的私有成員 2. 對于全局函數(shù) int f(void) ,與其等價的函數(shù)原型為:A. int& f( ); B. int f( ) const;C. int* f( ); D. const int f( );3. 類A中有唯一的一個成員函數(shù)f,且f是公有的靜態(tài)或非靜態(tài)成員函數(shù),對于類A的一個對象a,執(zhí)行語句 a.f(100);成功,那么f 的函數(shù)原型不可以
2、是:A. A& f( int, int=50 ); B. void f(int& ) ;C. const A * f(const int ); D. A f( const int&);4. 關于異常和C+提供的異常處理機制不正確的說法是:A. 能夠改變程序的執(zhí)行順序 B. 異??梢允菍ο驝. 用戶不能自定義異常類型 D. 異??梢杂胏atch進行捕捉處理5. 在不考慮強制類型轉(zhuǎn)換的情況下,關于類中常量成員函數(shù)的下列說法不正確的是:A. 常量成員函數(shù)中不能修改本類中的非靜態(tài)數(shù)據(jù)成員。B. 常量成員函數(shù)中可以調(diào)用本類中的任何靜態(tài)成員函數(shù)。C. 常量成員函數(shù)的返回值只能是vo
3、id。D. 若常量成員函數(shù)中調(diào)用虛函數(shù)f,那么函數(shù)f在本類中也一定是一個常量成員函數(shù)。6任意一個類,析構函數(shù)的個數(shù)最多是:A不限個數(shù) B1C2 D37在C+程序中,對象之間的相互通信可以通過:A繼承實現(xiàn) B調(diào)用成員函數(shù)實現(xiàn)C封裝實現(xiàn) D函數(shù)重載實現(xiàn)8下面模板定義中不正確的是:Atemplate<class Q> Q F(Q x) return Q + x; Btemplate<class Q> Q F(Q x) return x + x; Ctemplate<class T> T F(T x) return x * x; Dtemplate<class
4、 T> T F(T x) return x > 1; 9對類型轉(zhuǎn)換函數(shù)說明正確的是:A 轉(zhuǎn)換函數(shù)不能被派生類繼承 B 一個類中只能有一個類型轉(zhuǎn)換函數(shù),以免錯誤調(diào)用C 類型轉(zhuǎn)換函數(shù)不能帶參數(shù),但可以指定返回類型D 轉(zhuǎn)換函數(shù)能對所屬類中對象進行類型轉(zhuǎn)換10下面關于類的成員函數(shù)描述不正確的是:A靜態(tài)成員函數(shù)內(nèi)可以直接訪問類的非靜態(tài)成員數(shù)據(jù)B靜態(tài)成員函數(shù)內(nèi)可以直接訪問類的靜態(tài)成員數(shù)據(jù)C非靜態(tài)成員函數(shù)可以直接訪問類的非靜態(tài)成員數(shù)據(jù)D非靜態(tài)成員函數(shù)可以直接訪問類的靜態(tài)成員數(shù)據(jù)二、判斷正誤,對于你認為錯誤的論述,說明原因或舉出反例。(每題2分,共20分)1 在public繼承方式下,基類中被說明
5、為protected和private的成員只能被其派生類的成員函數(shù)訪問,不能被其它的函數(shù)訪問。2 如果派生類的成員函數(shù)的原型與基類中被定義為虛函數(shù)的成員函數(shù)原型相同,那么,這個函數(shù)自動帶有虛函數(shù)的特性。3 一個類中的成員函數(shù)重載(overload)可以用const修飾符、函數(shù)原型的參數(shù)個數(shù)、對應位置的參數(shù)的類型和返回值類型為依據(jù)。4 無法產(chǎn)生對象的類一定是抽象類。5 在任何形式的繼承方式(public、protected和private)下,基類類型的指針都可以指向其派生類對象。6 若在類Base和派生類Derived中,分別聲明一個同名的私有整型成員變量int x; , 那么通過Derive
6、d類的實例對象,無論如何也訪問不到基類Base中的成員變量x的值。7 在靜態(tài)成員函數(shù)的實現(xiàn)代碼體內(nèi)不能使用this指針,在非靜態(tài)的成員函數(shù)實現(xiàn)代碼體內(nèi)可以使用this指針。8 在繼承過程中,帶有虛函數(shù)的類作為基類時,該類稱作虛基類。9 在不考慮出現(xiàn)運行時異常的情況下,若一個程序的main函數(shù)代碼體是空,則這個程序不會有輸入,也不會產(chǎn)生任何輸出結果。10 構造函數(shù)的初始化列表中的內(nèi)容,不會影響構造對象中成員數(shù)據(jù)的初始化順序。三、回答下列各題(共20分)1 說明類中的public、 protected和 private成員函數(shù)分別在public、protected和private繼承方式下的在派生
7、類中的可訪問性。(4分)2 類的哪些成員在缺省時可以由編譯器自動給出?(4分)3 如何判斷一個類A的兩個對象a1和a2是否是同一個對象?(3分)4 針對類A和類B,如何設計使得它們的對象可以直接或間接地存放在同一個數(shù)組中?(3分)5 對運算符進行重載時,有的運算符只能重載為類的成員函數(shù),有的只能重載為全局函數(shù),還有的兩者均可以,針對上三種情況各舉一例。(3分)6 在哪些情況下實現(xiàn)一個類的構造函數(shù)時,必須使用初始化列表?至少給出三種不同情況。(3分)四、閱讀下面兩個類的定義和部分實現(xiàn)代碼,完成4個問題。(每題3分,共12分)class Base public:Base(int value=0):
8、x(value) virtual Base() Base(const Base& rhs):x(rhs.x) Base& operator =(const Base& rhs) x=rhs.x; return *this;private:int x;class Derived:public Base public:Derived(int v):Base(v),y(v) virtual Derived() Derived(const Derived& rhs);Derived& operator=(const Derived& rhs); priv
9、ate:int y;(1) 實現(xiàn)類Derived的賦值運算Derived& operator=(const Derived&)(2) 實現(xiàn)類Derived的拷貝構造函數(shù)Derived(const Derived&)(3) 拷貝構造函數(shù)原型的參數(shù)類型說明中,const修飾符的作用是什么?為什么使用引用的形式?(4) 通常在什么情況下,一個類需要自定義并實現(xiàn)拷貝構造函數(shù)和賦值運算?五、寫出下面程序的運行結果(5分)#include <iostream.h>class A public:A( ) cout << "A" <&l
10、t; endl; A( ) cout << "A" << endl; ;class B public:B( ) f( ); cout << "B" << endl;virtual void f( ) cout << "B:f" << endl; virtual B( ) cout << "B" << endl; ;Class D: public B public:D( ) cout << "D&qu
11、ot; << endl; void f( ) cout << "D:f" << endl; virtual D( ) cout << "D" << endl; private:A a;void main( )B* pB = new D;pB->f( ); delete pB;六、寫出下面程序的運行結果(5分)Class Myclass public: Myclass(int a,int b,int c); void PrintNumber( ); void PrintSum( ); pri
12、vate: int A,B,C; static int Sum;#include <iostream.h>int Myclass:Sum=10; Myclass:Myclass(int a,int b,int c) A=a; B=b; C=c; Sum+=A+B+C; void Myclass:PrintNumber() cout <<"Number="<<A<<","<<B<<","<<C<<endl; void Myclass:Prin
13、tSum( ) cout<<"Sum="<<Sum<<endl;void main( ) Myclass M(3,7,10), N(14,9,1); M.PrintNumber( ); N.PrintNumber( ); M.PrintSum( ); N.PrintSum( );七、下面是對類A、類B和類C的部分定義和函數(shù)add的完整定義及實現(xiàn)。其中,void add(A& obj1,A& obj2)函數(shù)實現(xiàn)體中的語句obj1+obj2的含義為:obj1和obj2中對應的同名成員變量va、vb、vc成員分別相加,若對象中無
14、相應的成員變量,則按0處理,即對于add(a1,a2)含義為a1.va=a1.va+a2.va, a1.vb=a1.vb+a2.vb, a1.vc=a1.vc+a2.vc,若其中的某數(shù)據(jù)分量不存在則按0計算。為保證add函數(shù)功能,必須對這三個類進行必要的補充,請完整實現(xiàn)(包括定義聲明和實現(xiàn))它們。(10分)class Aprivate: int va;class B:public Aprivate: int vb;class C:public Bprivate: int vc;void add(A& obj1,A& obj2) obj1=obj1+ obj2;八、下面是一段完整
15、的程序,其中類D由類B1和類B2經(jīng)過多重繼承派生,請你只改變類D的定義和實現(xiàn),使其去掉多重繼承,其它代碼不作任何變化,并保持程序原有功能不變。(8分)class B1 public:virtual void f( ) const ;class B2 public:virtual void g( )const ;class D : public B1,public B2 public:void func( ) const f ( ); g( ); ;void F(const B1& aB1) aB1.f( ); void FF(const B2& aB2) aB2.g( ); v
16、oid main( ) D d; d.func( ); F(d);FF(d);九、類L的對象objL和類R的對象objR構成一個二元組(objL,objR),把其中的一個對象稱作左元,如objL;另一個稱作右元,如objR。一個簡單字典(Dictionary)由若干個這樣的二元組按一定條件構成,其條件是:所有二元組的左元類型都是L,所有二元組的右元類型都是R;任何兩個二元組的左元的值(對象內(nèi)容)不能相同,右元的值可以相同;一個字典具有的基本操作是:在滿足前述條件約束下,可將任何兩個對象構成的二元組加入字典中;任給一對象,可知它是否作為左元出現(xiàn)在字典中,若在,可返回與其對應的右元?,F(xiàn)請你定義并實
17、現(xiàn)這樣的字典類,在main函數(shù)中給出使用這個字典的例子代碼。不用考慮模板,允許將二元組中的元素設計成指針或引用形式 (10分)(全卷完畢)2002級C+面向?qū)ο蟪绦蛟O計試題(A卷)(滿分:100分)一、單項選擇(每題1分,共10分) 1 D2 D3 B4 C5 C6 B7 B8 A9 A 答案可能有誤,我認為應該是D10 A二、11 錯誤, private的成員不能被其派生類的成員函數(shù)訪問。12 正確。13 錯誤,返回值類型不作為依據(jù)。14 錯誤,構造函數(shù)在私有或保護權限修飾下時是反例。15 錯誤, public繼承方式下的基類類型的指針都可以指向其派生類對象。16 錯誤,可通過Base類中訪
18、問其x的方法見解訪問到。17 正確。18 錯誤,繼承方式中用virtual 修飾的是。19 錯誤,靜態(tài)說明的對象初始化時,其構造函數(shù)的執(zhí)行可能有結果輸出。20 正確,順序與列表順序無關。三、回答下列各題(共20分)1.繼承方式訪問權限PublicProtectedprivatePublic 可訪問,相當于public可訪問,相當于protected不可訪問protected可訪問,相當于protected可訪問,相當于protected不可訪問private可訪問,相當于private可訪問,相當于private不可訪問2 不帶參數(shù)的構造函數(shù)、拷貝構造函數(shù)、析構函數(shù)、賦值運算,還可以有相關的n
19、ew、delete運算等。3 a1與a2的地址值是否相等。4 讓A與B均從同一個類X派生,元素類型是X*或X&的樹組可存放A及B的對象地址或引用。5 只能為成員函數(shù)的,如:賦值運算;只能為全局函數(shù)的,如:插入運算符<<;均可的,如:+運算。6 (1)基類中無不帶參數(shù)的構造函數(shù);(2)類中有常量成員;(3)類中有引用成員。四、(5) Derived& operator=(const Derived& aD) Base:operator=(aD);y = aD.y;return *this; (6) Derived(const Derived& aD)
20、operator=(aD);(7) const修飾符的作用是使實際參數(shù)既可以是變量,又可以是常量。使用引用的目的是避免拷貝,避免無限遞歸循環(huán)調(diào)用。(8) 有指針或引用類型的數(shù)據(jù)成員時。五、B:fBADD:fDAB六、Number=3,7,10Number=14,9,1Sum=54Sum=54七、考查以虛函數(shù)形式定義的運算符重載,各類中實現(xiàn)相似,略。class A private:int va;public:A(int n):va(n) virtual int get_va()return va;virtual int get_vb()return 0;virtual int get_vc()r
21、eturn 0;virtual A& operator+(A& obj)va+=obj.get_va();return *this;void printf()cout << get_va() <<','<<get_vb()<<','<<get_vc()<<endl;class B: public A private:int vb;public:B(int n1,int n2):A(n1),vb(n2)virtual int get_vb()return vb;virtual A& operator+(A& obj)A:operator+(obj);vb+=obj.get_vb();return *this;class C: public B private:int vc;public:C(int n1,int n2,int n3):B(n1,n2),vc(n3)virtual int get_vc()return vc;virtual A& operator+(A&a
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 衛(wèi)浴加盟合同范例
- 合肥鋼管出租合同范例
- 代建開發(fā)合同范本
- 識字研究課題申報書
- 天津小學課題申報書格式
- 住房公積金優(yōu)化調(diào)整讓民生更加溫暖
- 農(nóng)業(yè)機具代理合同范本
- 合同范本正版
- 上海樓梯合同范本
- 人力公司墊資合同范本
- 勞動用工協(xié)議書范本正規(guī)范本(通用版)1
- JCT640-2010 頂進施工法用鋼筋混凝土排水管
- 英納能特種防護材料珠海產(chǎn)研生態(tài)基地建設項目(一期)環(huán)境影響報告表
- 小班安全《安安全全玩滑梯》
- 形式發(fā)票與商業(yè)發(fā)票的區(qū)別
- 人工智能在軟件缺陷預測中的應用
- 03D501-1 防雷與接地安裝
- IPQC入職崗位培訓
- 牛津自然拼讀
- 京東集團員工手冊-京東
- 正確識記現(xiàn)代漢語常用字字形課件
評論
0/150
提交評論