




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、2002級(jí)C+面向?qū)ο蟪绦蛟O(shè)計(jì)試題(A卷)(滿分:100分)一、單項(xiàng)選擇(每題1分,共10分) 1. 下面列出的基類(lèi)中的哪部分能被派生類(lèi)自動(dòng)繼承:A. 基類(lèi)中的構(gòu)造函數(shù) B. 基類(lèi)中的虛析構(gòu)函數(shù)C. 基類(lèi)中重載的賦值操作 D. 基類(lèi)中的私有成員 2. 對(duì)于全局函數(shù) int f(void) ,與其等價(jià)的函數(shù)原型為:A. int& f( ); B. int f( ) const;C. int* f( ); D. const int f( );3. 類(lèi)A中有唯一的一個(gè)成員函數(shù)f,且f是公有的靜態(tài)或非靜態(tài)成員函數(shù),對(duì)于類(lèi)A的一個(gè)對(duì)象a,執(zhí)行語(yǔ)句 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. 關(guān)于異常和C+提供的異常處理機(jī)制不正確的說(shuō)法是:A. 能夠改變程序的執(zhí)行順序 B. 異常可以是對(duì)象C. 用戶不能自定義異常類(lèi)型 D. 異??梢杂胏atch進(jìn)行捕捉處理5. 在不考慮強(qiáng)制類(lèi)型轉(zhuǎn)換的情況下,關(guān)于類(lèi)中常量成員函數(shù)的下列說(shuō)法不正確的是:A. 常量成員函數(shù)中不能修改本類(lèi)中的非靜態(tài)數(shù)據(jù)成員。B. 常量成員函數(shù)中可以調(diào)用本類(lèi)中的任何靜態(tài)成員函數(shù)。C. 常量成員函數(shù)的返回值只能是vo
3、id。D. 若常量成員函數(shù)中調(diào)用虛函數(shù)f,那么函數(shù)f在本類(lèi)中也一定是一個(gè)常量成員函數(shù)。6任意一個(gè)類(lèi),析構(gòu)函數(shù)的個(gè)數(shù)最多是:A不限個(gè)數(shù) B1C2 D37在C+程序中,對(duì)象之間的相互通信可以通過(guò):A繼承實(shí)現(xiàn) B調(diào)用成員函數(shù)實(shí)現(xiàn)C封裝實(shí)現(xiàn) D函數(shù)重載實(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對(duì)類(lèi)型轉(zhuǎn)換函數(shù)說(shuō)明正確的是:A 轉(zhuǎn)換函數(shù)不能被派生類(lèi)繼承 B 一個(gè)類(lèi)中只能有一個(gè)類(lèi)型轉(zhuǎn)換函數(shù),以免錯(cuò)誤調(diào)用C 類(lèi)型轉(zhuǎn)換函數(shù)不能帶參數(shù),但可以指定返回類(lèi)型D 轉(zhuǎn)換函數(shù)能對(duì)所屬類(lèi)中對(duì)象進(jìn)行類(lèi)型轉(zhuǎn)換10下面關(guān)于類(lèi)的成員函數(shù)描述不正確的是:A靜態(tài)成員函數(shù)內(nèi)可以直接訪問(wèn)類(lèi)的非靜態(tài)成員數(shù)據(jù)B靜態(tài)成員函數(shù)內(nèi)可以直接訪問(wèn)類(lèi)的靜態(tài)成員數(shù)據(jù)C非靜態(tài)成員函數(shù)可以直接訪問(wèn)類(lèi)的非靜態(tài)成員數(shù)據(jù)D非靜態(tài)成員函數(shù)可以直接訪問(wèn)類(lèi)的靜態(tài)成員數(shù)據(jù)二、判斷正誤,對(duì)于你認(rèn)為錯(cuò)誤的論述,說(shuō)明原因或舉出反例。(每題2分,共20分)1 在public繼承方式下,基類(lèi)中被說(shuō)明
5、為protected和private的成員只能被其派生類(lèi)的成員函數(shù)訪問(wèn),不能被其它的函數(shù)訪問(wèn)。2 如果派生類(lèi)的成員函數(shù)的原型與基類(lèi)中被定義為虛函數(shù)的成員函數(shù)原型相同,那么,這個(gè)函數(shù)自動(dòng)帶有虛函數(shù)的特性。3 一個(gè)類(lèi)中的成員函數(shù)重載(overload)可以用const修飾符、函數(shù)原型的參數(shù)個(gè)數(shù)、對(duì)應(yīng)位置的參數(shù)的類(lèi)型和返回值類(lèi)型為依據(jù)。4 無(wú)法產(chǎn)生對(duì)象的類(lèi)一定是抽象類(lèi)。5 在任何形式的繼承方式(public、protected和private)下,基類(lèi)類(lèi)型的指針都可以指向其派生類(lèi)對(duì)象。6 若在類(lèi)Base和派生類(lèi)Derived中,分別聲明一個(gè)同名的私有整型成員變量int x; , 那么通過(guò)Derive
6、d類(lèi)的實(shí)例對(duì)象,無(wú)論如何也訪問(wèn)不到基類(lèi)Base中的成員變量x的值。7 在靜態(tài)成員函數(shù)的實(shí)現(xiàn)代碼體內(nèi)不能使用this指針,在非靜態(tài)的成員函數(shù)實(shí)現(xiàn)代碼體內(nèi)可以使用this指針。8 在繼承過(guò)程中,帶有虛函數(shù)的類(lèi)作為基類(lèi)時(shí),該類(lèi)稱作虛基類(lèi)。9 在不考慮出現(xiàn)運(yùn)行時(shí)異常的情況下,若一個(gè)程序的main函數(shù)代碼體是空,則這個(gè)程序不會(huì)有輸入,也不會(huì)產(chǎn)生任何輸出結(jié)果。10 構(gòu)造函數(shù)的初始化列表中的內(nèi)容,不會(huì)影響構(gòu)造對(duì)象中成員數(shù)據(jù)的初始化順序。三、回答下列各題(共20分)1 說(shuō)明類(lèi)中的public、 protected和 private成員函數(shù)分別在public、protected和private繼承方式下的在派生
7、類(lèi)中的可訪問(wèn)性。(4分)2 類(lèi)的哪些成員在缺省時(shí)可以由編譯器自動(dòng)給出?(4分)3 如何判斷一個(gè)類(lèi)A的兩個(gè)對(duì)象a1和a2是否是同一個(gè)對(duì)象?(3分)4 針對(duì)類(lèi)A和類(lèi)B,如何設(shè)計(jì)使得它們的對(duì)象可以直接或間接地存放在同一個(gè)數(shù)組中?(3分)5 對(duì)運(yùn)算符進(jìn)行重載時(shí),有的運(yùn)算符只能重載為類(lèi)的成員函數(shù),有的只能重載為全局函數(shù),還有的兩者均可以,針對(duì)上三種情況各舉一例。(3分)6 在哪些情況下實(shí)現(xiàn)一個(gè)類(lèi)的構(gòu)造函數(shù)時(shí),必須使用初始化列表?至少給出三種不同情況。(3分)四、閱讀下面兩個(gè)類(lèi)的定義和部分實(shí)現(xiàn)代碼,完成4個(gè)問(wèn)題。(每題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) 實(shí)現(xiàn)類(lèi)Derived的賦值運(yùn)算Derived& operator=(const Derived&)(2) 實(shí)現(xiàn)類(lèi)Derived的拷貝構(gòu)造函數(shù)Derived(const Derived&)(3) 拷貝構(gòu)造函數(shù)原型的參數(shù)類(lèi)型說(shuō)明中,const修飾符的作用是什么?為什么使用引用的形式?(4) 通常在什么情況下,一個(gè)類(lèi)需要自定義并實(shí)現(xiàn)拷貝構(gòu)造函數(shù)和賦值運(yùn)算?五、寫(xiě)出下面程序的運(yùn)行結(jié)果(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;六、寫(xiě)出下面程序的運(yùn)行結(jié)果(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( );七、下面是對(duì)類(lèi)A、類(lèi)B和類(lèi)C的部分定義和函數(shù)add的完整定義及實(shí)現(xiàn)。其中,void add(A& obj1,A& obj2)函數(shù)實(shí)現(xiàn)體中的語(yǔ)句obj1+obj2的含義為:obj1和obj2中對(duì)應(yīng)的同名成員變量va、vb、vc成員分別相加,若對(duì)象中無(wú)
14、相應(yīng)的成員變量,則按0處理,即對(duì)于add(a1,a2)含義為a1.va=a1.va+a2.va, a1.vb=a1.vb+a2.vb, a1.vc=a1.vc+a2.vc,若其中的某數(shù)據(jù)分量不存在則按0計(jì)算。為保證add函數(shù)功能,必須對(duì)這三個(gè)類(lèi)進(jìn)行必要的補(bǔ)充,請(qǐng)完整實(shí)現(xiàn)(包括定義聲明和實(shí)現(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、的程序,其中類(lèi)D由類(lèi)B1和類(lèi)B2經(jīng)過(guò)多重繼承派生,請(qǐng)你只改變類(lèi)D的定義和實(shí)現(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èi)L的對(duì)象objL和類(lèi)R的對(duì)象objR構(gòu)成一個(gè)二元組(objL,objR),把其中的一個(gè)對(duì)象稱作左元,如objL;另一個(gè)稱作右元,如objR。一個(gè)簡(jiǎn)單字典(Dictionary)由若干個(gè)這樣的二元組按一定條件構(gòu)成,其條件是:所有二元組的左元類(lèi)型都是L,所有二元組的右元類(lèi)型都是R;任何兩個(gè)二元組的左元的值(對(duì)象內(nèi)容)不能相同,右元的值可以相同;一個(gè)字典具有的基本操作是:在滿足前述條件約束下,可將任何兩個(gè)對(duì)象構(gòu)成的二元組加入字典中;任給一對(duì)象,可知它是否作為左元出現(xiàn)在字典中,若在,可返回與其對(duì)應(yīng)的右元?,F(xiàn)請(qǐng)你定義并實(shí)
17、現(xiàn)這樣的字典類(lèi),在main函數(shù)中給出使用這個(gè)字典的例子代碼。不用考慮模板,允許將二元組中的元素設(shè)計(jì)成指針或引用形式 (10分)(全卷完畢)2002級(jí)C+面向?qū)ο蟪绦蛟O(shè)計(jì)試題(A卷)(滿分:100分)一、單項(xiàng)選擇(每題1分,共10分) 1 D2 D3 B4 C5 C6 B7 B8 A9 A 答案可能有誤,我認(rèn)為應(yīng)該是D10 A二、11 錯(cuò)誤, private的成員不能被其派生類(lèi)的成員函數(shù)訪問(wèn)。12 正確。13 錯(cuò)誤,返回值類(lèi)型不作為依據(jù)。14 錯(cuò)誤,構(gòu)造函數(shù)在私有或保護(hù)權(quán)限修飾下時(shí)是反例。15 錯(cuò)誤, public繼承方式下的基類(lèi)類(lèi)型的指針都可以指向其派生類(lèi)對(duì)象。16 錯(cuò)誤,可通過(guò)Base類(lèi)中訪
18、問(wèn)其x的方法見(jiàn)解訪問(wèn)到。17 正確。18 錯(cuò)誤,繼承方式中用virtual 修飾的是。19 錯(cuò)誤,靜態(tài)說(shuō)明的對(duì)象初始化時(shí),其構(gòu)造函數(shù)的執(zhí)行可能有結(jié)果輸出。20 正確,順序與列表順序無(wú)關(guān)。三、回答下列各題(共20分)1.繼承方式訪問(wèn)權(quán)限PublicProtectedprivatePublic 可訪問(wèn),相當(dāng)于public可訪問(wèn),相當(dāng)于protected不可訪問(wèn)protected可訪問(wèn),相當(dāng)于protected可訪問(wèn),相當(dāng)于protected不可訪問(wèn)private可訪問(wèn),相當(dāng)于private可訪問(wèn),相當(dāng)于private不可訪問(wèn)2 不帶參數(shù)的構(gòu)造函數(shù)、拷貝構(gòu)造函數(shù)、析構(gòu)函數(shù)、賦值運(yùn)算,還可以有相關(guān)的n
19、ew、delete運(yùn)算等。3 a1與a2的地址值是否相等。4 讓A與B均從同一個(gè)類(lèi)X派生,元素類(lèi)型是X*或X&的樹(shù)組可存放A及B的對(duì)象地址或引用。5 只能為成員函數(shù)的,如:賦值運(yùn)算;只能為全局函數(shù)的,如:插入運(yùn)算符<<;均可的,如:+運(yùn)算。6 (1)基類(lèi)中無(wú)不帶參數(shù)的構(gòu)造函數(shù);(2)類(lèi)中有常量成員;(3)類(lèi)中有引用成員。四、(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í)際參數(shù)既可以是變量,又可以是常量。使用引用的目的是避免拷貝,避免無(wú)限遞歸循環(huán)調(diào)用。(8) 有指針或引用類(lèi)型的數(shù)據(jù)成員時(shí)。五、B:fBADD:fDAB六、Number=3,7,10Number=14,9,1Sum=54Sum=54七、考查以虛函數(shù)形式定義的運(yùn)算符重載,各類(lèi)中實(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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 酒店房間出租合同協(xié)議書(shū)
- 果園轉(zhuǎn)讓合同協(xié)議書(shū)范本
- 店面租賃經(jīng)營(yíng)合同協(xié)議書(shū)
- 復(fù)印裝訂合同協(xié)議書(shū)
- 車(chē)輛裝飾施工合同協(xié)議書(shū)
- 應(yīng)急工程合同書(shū)或協(xié)議書(shū)
- 2025年手寫(xiě)筆市場(chǎng)分析現(xiàn)狀
- 以房抵債協(xié)議書(shū)合同
- 權(quán)利脂材料項(xiàng)目投資可行性研究分析報(bào)告(2024-2030版)
- 電商合作合同協(xié)議書(shū)
- 護(hù)理科研選題與論文寫(xiě)作
- 珠寶首飾加工工藝介紹課件
- 淘寶網(wǎng)-信息披露申請(qǐng)表
- 小微型客車(chē)租賃經(jīng)營(yíng)備案表
- 教育培訓(xùn)機(jī)構(gòu)辦學(xué)許可證申請(qǐng)書(shū)(樣本)
- 瓷磚業(yè)務(wù)員提成方案
- 2022年一級(jí)注冊(cè)計(jì)量師案例分析真題
- “三級(jí)”安全安全教育記錄卡
- 愛(ài)蓮說(shuō)-王崧舟
- 小微企業(yè)信用評(píng)級(jí)標(biāo)準(zhǔn)模板
- 車(chē)輛安全設(shè)施設(shè)備定期檢查臺(tái)賬
評(píng)論
0/150
提交評(píng)論