國家二級C++機試(繼承和派生)模擬試卷6(題后含答案及解析)_第1頁
國家二級C++機試(繼承和派生)模擬試卷6(題后含答案及解析)_第2頁
國家二級C++機試(繼承和派生)模擬試卷6(題后含答案及解析)_第3頁
國家二級C++機試(繼承和派生)模擬試卷6(題后含答案及解析)_第4頁
國家二級C++機試(繼承和派生)模擬試卷6(題后含答案及解析)_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

國家二級C++機試(繼承和派生)模擬試卷6(題后含答案及解析)題型有:1.選擇題選擇題1.有如下類聲明:classXA{intx;public:XA(intn){x=n;)};classXB:publicXA{inty;public:XB(inta,intb);};在構造函數(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){}正確答案:B解析:此題考查的是派生類中構造函數(shù)的定義。派生類的構造首先要調(diào)用基類的構造函數(shù),對基類成員初始化;然后對派生類中的新增成員初始化。格式為:派生類名(構造函數(shù)形參表)基類構造函數(shù)(形參表)。知識模塊:繼承和派生2.有如下程序:#inc1ude<iostream>usingnamespacestd;classBASEfpublic:~BASE(){cout<<”BASE”;}};classDERIVED:publicBASE{public:~DERIVED(){cout<<”DERIVED”;}};intmain(){DERIVEDx;return0;}執(zhí)行后的輸出結果是()。A.BASEB.DERIVEDC.BASEDERIVEDD.DERIVEDBASE正確答案:D解析:此題考查的是派生類的定義和使用。當對象被刪除時,派生類的析構函數(shù)就被執(zhí)行。由于析構函數(shù)不能被繼承,因此在執(zhí)行派生類的析構函數(shù)時,基類的析構函數(shù)也將被調(diào)用。執(zhí)行順序是先執(zhí)行派生類的析構函數(shù),再執(zhí)行基類的析構函數(shù),其順序與執(zhí)行構造函數(shù)的順序正好相反。知識模塊:繼承和派生3.下列有關繼承和派生的敘述中,正確的是()。A.如果一個派生類私有繼承其基類,則該派生類對象不能訪問基類的保護成員B.派生類的成員函數(shù)可以訪問基類的所有成員C.基類對象可以賦值給派生類對象D.如果派生類沒有實現(xiàn)基類的一個純虛函數(shù),則該派生類是一個抽象類正確答案:D解析:此題考查的是繼承和派生。無論是哪種繼承方式,派生類都能夠訪問基類的公有和保護成員,而不能訪問基類的私有成員,故選項A和B錯誤:公有繼承時,基類的對象不可作為派生類的對象處理,即基類對象不可賦值給派生類對象,所以選項C錯誤。知識模塊:繼承和派生4.下列有關類繼承的敘述中,錯誤的是()。A.繼承可以實現(xiàn)軟件復用B.虛基類可以解決由多繼承產(chǎn)生的二義性問題C.派生類構造函數(shù)要負責調(diào)用基類的構造函數(shù)D.派生類沒有繼承基類的私有成員正確答案:D解析:此題考查的是類繼承。派生類繼承了基類的(全部數(shù)據(jù)成員,私有成員),只是基類的私有成員在派生類中是隱藏的,只能在基類內(nèi)部訪問,故選項D錯誤。知識模塊:繼承和派生5.在下列關鍵字中,不能用來表示繼承方式的是()。A.privateB.staticC.publicD.protected正確答案:B解析:此題考查的是繼承方式。繼承方式有私有(private)、保護(protected)、公有(public)三種。知識模塊:繼承和派生6.在類聲明中,緊跟在“public:”后聲明的成員的訪問權限是()。A.私有B.公有C.保護D.默認正確答案:B解析:類中提供了3種訪問控制的權限:公有,私有和保護。其中公有類型定義了類的外部接口,任何一個外部的訪問都必須通過外部接口進行。私有類型的成員只允許本類的成員函數(shù)訪問,來自類外部的任何訪問都是非法的,保護類型介于公有類型和私有類型之間,在繼承和派生時可以體現(xiàn)出其特點。知識模塊:繼承和派生7.定義派生類時,若不使用關鍵字顯式地規(guī)定采用何種繼承方式,則默認方式為()。A.私有繼承B.非私有繼承C.保護繼承D.公有繼承正確答案:A解析:繼承的方式包括三種:公有繼承,保護繼承和私有繼承。如果不顯示的給出繼承方式,缺省的類繼承方式是私有繼承private。知識模塊:繼承和派生8.有如下類定義:classXX{intxx;public:XX():xx(0){cout<<’A’;}XX(intn):xx(n){cout<<’B’;)};classYY:publicXX{intyy;public:YY():yy(0){cout<<yy;}YY(intn):XX(n+l),yy(n){cout<<yy;)YY(intm,intn):XX(m),yy(n){cout<<yy;}};下列選項中,輸出結果為AO的語句是()。A.YYy1(0,0);B.YYy2(1);C.YYy3(0);D.YYy4;正確答案:D解析:考查的是類的繼承。選項A的執(zhí)行結果為BO,建立YY的對象yl,首先調(diào)用其構造函數(shù),YY繼承于XX所以先調(diào)用的為XX的構造函數(shù),根據(jù)輸入的參數(shù)可知輸出B,然后執(zhí)行YY的構造函數(shù)輸出0;同理,選項B的執(zhí)行結果為B1,選項C的執(zhí)行結果為B0。知識模塊:繼承和派生9.有如下類定義:classXX{intxdata;public:XX(intn=0):xdata(n){}};classYY:publicXX{intydata;public:YY(intm=0,intn=0):XX(m),ydata(n){}};YY類的對象包含的數(shù)據(jù)成員的個數(shù)是()。A.1B.2C.3D.4正確答案:B解析:因為類XX包括…個數(shù)據(jù)成員xdata,而類YY繼承自類XX,所在類YY中也包含數(shù)據(jù)成員xdata,同時類YY中也定義了其本身的數(shù)據(jù)成員ydata,因而YY類的對象包含的數(shù)據(jù)成員的個數(shù)是2。知識模塊:繼承和派生10.下列關于繼承方式的描述中,錯誤的是()。A.如果不顯武地指定繼承方式,缺省的繼承方式是私有(private)B.采用公有繼承方式時,基類中的公有成員在派生類中仍然是公有成員C.采用保護繼承方式時,基類中的保護成員在派生類中仍然是保護成員D.采用私有繼承方式時,基類中的私有成員在派生類中仍然是私有成員正確答案:D解析:基類中的私有成員在派生類中是隱蔽的,只能在基類內(nèi)部訪問。派生類中的成員不可以訪問基類中的私有成員,只可以訪問基類中的公有成員和保護成員。知識模塊:繼承和派生11.下列代碼段聲明了3個類classPerson{};classStudent:publicPerson{};classUndergraduate:Student{};下列關于這些類之間關系的描述中,錯誤的是()。A.類Person是類Undergraduate的基類B.類Undergraduate從類student公有繼承C.類student是類Person的派生類D.類Undergraduate是類Person的派生類正確答案:B解析:Student類公有繼承自Person類,Undergraduate類私有繼承自Student類。所以Undergraduate類是從Student類私有繼承的。知識模塊:繼承和派生12.下列關于基類和派生類關系的敘述中,正確的是()。A.每個類最多只能有一個直接基類B.派生類中的成員可以訪問基類中的任何成員C.基類的構造函數(shù)必須在派生類的構造函數(shù)體中調(diào)用D.派生類除了繼承基類的成員,還可以定義新的成員正確答案:D解析:繼承分為單繼承和多繼承,一個類只有一個直接基類時,稱為單繼承;而一個類同時有多個直接基類時,則稱為多繼承。派生類的數(shù)據(jù)成員由所有基類的的數(shù)據(jù)成員與派生類新增的數(shù)據(jù)成員共同組成。知識模塊:繼承和派生13.若已定義了類Vehic1e,則下列派生類定義中,錯誤的是()。A.classCar:vehic1e{/*類體略*/};B.classCar:publiccar{/*類體略*/};C.classCar:publicVehic1e{/*類體略*/);D.classCar:virtualpublicVehic1e{/*類體略*/).正確答案:B解析:類Car不能派生自它本身。知識模塊:繼承和派生14.下列描述中,錯誤的是()。A.公有繼承時基類中的公有成員在派生類中仍是公有成員B.公有繼承時基類中的保護成員在派生類中仍是保護成員C.保護繼承時基類中的公有成員在派生類中仍是公有成員D.保護繼承時基類中的保護成員在派生類中仍是保護成員正確答案:C解析:保護繼承時基類中的公有成員在派生類中是保護成員。知識模塊:繼承和派生15.當派生類繼承一個基類時,默認的繼承方式為()。A.publicB.protectedC.privateD.不確定正確答案:C解析:派生類繼承…個基類時,默認的繼承方式為private。知識模塊:繼承和派生16.下列關于派生類的敘述中,錯誤的是()。A.派生類至少要有一個基類B.派生類中包括了從基類繼承的成員C.一個派生類可以作為另一個派生類的基類D.基類成員被派生類繼承以后訪問權限保持不變正確答案:D解析:派生類對象對基類成員的訪問權限:①對于公有繼承,只有基類的公有成員可以被派生類對象訪問,其他(保護和私有)成員不能被訪問。②對于私有繼承和保護繼承,基類中所有成員都不能被派生類對象訪問。派生類對基類成員的訪問權限:①對于公有繼承,基類中公有成員和保護成員可以訪問,而基類中私有成員不能被訪問。②對于私有繼承和保護繼承,也是基類中的公有成員和保護成員可以被派生類訪問,而基類中的私有成員不能被訪問。知識模塊:繼承和派生17.有如下類聲明:classMyBASE{intk:public:voidset(intn){k=n;}intget()const{returnk;}};classMyDERIVED:protectedMyBASE{protected:intj;public:voidset(intm,intn){MyBASE::set(m);j=n;}intget()const{returnMyBASE::get()+j;}};則類MyDERIVED中保護的數(shù)據(jù)成員和成員函數(shù)的個數(shù)是()。A.4B.3C.2D.1正確答案:B解析:此題考查的是派生與繼承中的訪問權限。protected派生:private一>不可見;protected一>private;public一>protected.知識模塊:繼承和派生18.有如下程序:#inc1ude<iostream>usingnamespacestd;classBase{public:voidfun(){cout<<”Base::fun”<<endl;}};classDerived:publicBase{public:,voidfun(){cout<<”Derived::fun”<<endl;}};intmain(){Derivedd:d.mn();return0;}己知其執(zhí)行后的輸出結果為:Base::funDerived::fun則程序中下劃線處應填入的語句是()。A.Base.fun();B.Base::fun();C.Base一>fun();D.mn();正確答案:B解析:此題考查的是繼承的使用。分析題目可知,橫線處應填入對基類成員函數(shù)fun()的調(diào)用語句,此處只能使用作用域運算符“::”才能調(diào)用到基類的同名函數(shù),故選項B正確。知識模塊:繼承和派生19.有如下程序:#inc1ude<iostream>usingnamespacestd;classBase{prVate:Voidmnl()const{cout<<”fun1”;}proteCted:Voidfun2()const{cout<<”mn2¨;}public:Voidfun3()const{cout<<”fun3”;}};classDeriVed:prOteCtedBaSe{public:Voidfun4()const{cout<<”fIun4”;}};intmain(){DeriVedobj;obj.fun1();//①obj.fun2();//②obj.fun3();//③obj.fun4();//④reurnO:}其中有語法錯誤的語句是()。A.①②③④B.①②③C.②③④D.①④正確答案:B解析:此題考查的是保護繼承。因為Derived以protected方式繼承了Base類,所以父類Base中的公有成員和保護成員均成了Derived類的保護成員,而Base類的私有成員Derived類不可訪問。所以,主函數(shù)中通過Derived類的對象只能夠訪問到Derived類的公有成員。知識模塊:繼承和派生20.在公有繼承的情況下,允許派生類直接訪問的基類成員包括()。A.公有成員B.公有成員和保護成員C.公有成員、保護成員和私有成員D.保護成員正確答案:B解析:此題考查的是派生類對基類成員的訪問?;惖某蓡T有公有、保護和私有三種訪問屬性;類的繼承方式也有公有繼承、保護繼承和私有繼承三種。無論那種繼承方式,派生類中的成員都不能訪問基類中的私有成員,但可以訪問基類中的公有成員和保護成員,知識模塊:繼承和派生21.有如下類定義:classMyBase{intk;publiC:MyBase(intn=0):k(n){}intvalue()const{retumk;}};classMyDeriVed:MyBase{intj;public:MyDerived(inti):j(i){}intgetK()const{returnk;)mtgeU()const{returnj;}};編譯時發(fā)現(xiàn)有一處語法錯誤,對這個錯誤最準確的描述是()。A.函數(shù)getK試圖訪問基類的私有成員變量kB.在類MyDerived的定義中,基類名MyBase前缺少關鍵字public、protected或privateC.類MyDerived缺少一個無參的構造函數(shù)D.類MyDerived的構造函數(shù)沒有對基類數(shù)據(jù)成員k進行初始化正確答案:A解析:此題考查的是派生類對基類成員的訪問。因為類中缺省的訪問權限是私有,所以本題中MyBase類中定義的成員k是私有成員。派生類中的成員只能訪問基類中的公有成員和保護成員,不能訪問基類中的私有成員。所以派生類中函數(shù)getKO中的語句returnk;是非法的。知識模塊:繼承和派生22.派生類的成員函數(shù)不能訪問基類的()。A.公有成員和保護成員B.公有成員C.私有成員D.保護成員正確答案:C解析:此題考查的是派生類對基類成員的訪問。派生類對基類的各個成員的訪問能力與繼承方式無關,其成員不能訪問基類中的私有成員,可以訪問基類的公有成員和保護成員。知識模塊:繼承和派生23.若有如下類定義:classB{voidfunl(){}protected:doublevarl;public:voidfun2(){}};classD:publicB{protected:voidfun3(){}};已知obj是類D的對象,下列句中不違反類成員訪問控制權限的是()。A.obj.fun1();B.obj.varl;C.obj.fun2();D.obj.fun3();正確答案:C解析:此題考查的是基類成員在派生類中的訪問屬性。派生類中的成員不能訪問基類中的私有成員,可以訪問基類中的公有成員和保護成員。派生類從基類公有繼承時,基類的公有成員和保護成員在派生類中仍然是公有成員和保護成員;派生類從基類私有繼承時,基類的公有成員和保護成員在派生類中都變成私有成員;派生類從基類保護繼承時,基類的公有成員在派生類中變成保護成員,基類的保護成員在派生類中仍然是保護成員。根據(jù)以上分析可知,本題中只有從B類繼承的fun2()為公有屬性,故選C選項。知識模塊:繼承和派生24.有如下類聲明:classBase{protected;intamount,public;Base(intn

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論