C面向對象程序設計期末考試試題_第1頁
C面向對象程序設計期末考試試題_第2頁
C面向對象程序設計期末考試試題_第3頁
C面向對象程序設計期末考試試題_第4頁
C面向對象程序設計期末考試試題_第5頁
免費預覽已結束,剩余1頁可下載查看

下載本文檔

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

文檔簡介

C面向對象程序設計期末考試一試題C面向對象程序設計期末考試一試題6/6C面向對象程序設計期末考試一試題?C++面向對象程序設計?考試一試題本試卷總分值100分;請將答案寫在答題紙上,寫明題號,不用抄題,筆跡工整、清楚;請在答題紙和試題紙上都寫上你的班級,學號和姓名,交卷時請將試題紙、答題紙和廁紙一并交上來。一、單項選擇題(共10分,每題1分)C++中解決命名矛盾的體制是:D(A)虛基類(B)虛函數(shù)(C)函數(shù)重載(D)名字空間2.假定類A的一個對象所占的內(nèi)存空間中包括虛函數(shù)表的進口地點,那么:C(A)類A不可以有靜態(tài)數(shù)據(jù)成員(B)類A中公有的成員函數(shù)必定是虛的(C)類A中起碼有一個成員函數(shù)是虛的(D)類A的析構函數(shù)必定是虛的3.隨意一個類,析構函數(shù)的個數(shù)最多是:B(A)不限個數(shù)(B)1(C)2(D)34.以下對于this指針的說法,哪個是正確的:D(A)this指針必定指向常量型數(shù)據(jù)(B)this指向的數(shù)據(jù)不行改正(C)靜態(tài)成員函數(shù)中也能夠接見this指針(D)this指針自己可直接作為成員函數(shù)的返回值5.在類定義中,為說明成員的接見權限,private,protected,public能夠出現(xiàn)次數(shù)為:A(A)次數(shù)沒有詳細限制(B)每種至多一次(C)public起碼一次(D)每種起碼一次6.下邊哪一種定義方式是正確的,而且使得p能夠作為函數(shù)voidf(A*constpp);的實參:A(A)A*p=newA;(B)Aa;A*p=a;(C)constA*p=newA;(D)Aa;constA*p=a;7.obj是類A的一個對象,履行語句constA&aA=obj;,那么以下說法正確的選項是:C(A)類A的拷貝結構函數(shù)會被調(diào)用(B)類A的賦值函數(shù)會被調(diào)用(C)&aA的值就是&obj(D)語句obj.f();等價于語句aA.f();8.下邊對于接見類A的私有數(shù)據(jù)成員的說法,錯誤的選項是:C(A)類A的友元函數(shù)能夠接見類A的私有成員。(B)類A的友元類中的非靜態(tài)成員函數(shù)能夠接見類A的私有成員。(C)類A的嵌套類中的非靜態(tài)成員函數(shù)能夠接見類A的私有成員。(D)類A中的非靜態(tài)成員函數(shù)能夠接見類A的私有成員。9.類A中有獨一的一個成員函數(shù)f,且f是公有的靜態(tài)或非靜態(tài)成員函數(shù),對于類A的一個對象a,履行語句a.f(100);成功,那么f的函數(shù)原型不可以夠是:B(A)A&f(int,int=50);(B)voidf(int&);(C)constA*f(constint);(D)Af(constint&);10.下邊對于類的成員函數(shù)描繪不正確的選項是:A靜態(tài)成員函數(shù)內(nèi)能夠直接接見類的非靜態(tài)成員數(shù)據(jù)靜態(tài)成員函數(shù)內(nèi)能夠直接接見類的靜態(tài)成員數(shù)據(jù)非靜成函數(shù)能夠直接的非靜成數(shù)據(jù)非靜成函數(shù)能夠直接的靜成數(shù)據(jù)〔全局成〕二、判斷正,于你的述,明原由或出反例。〔每2分,共20分〕1.重流操作符<<和>>,假如第一個參數(shù)的型ostream和istream,那么個重函數(shù)既能夠用于準入出流,也能夠用于文件流上。,ostream和istream是準入出流、文件流、字符串流的基2.在同一其中,能夠定重的成函數(shù)voidf(int);和virtualvoidf(int);。,屬于重復定抽象不會生例,所以不需要有結構函數(shù)。,被派生需要它的結構函數(shù)A有一個非靜的成函數(shù)f,其函數(shù)原型是:voidA::f()const,函數(shù)被用,必定是通A或A的某后代的一個用const修符明的常量象用的。,常函數(shù)能夠由量象或常量象用異樣必在其生的目前函數(shù)中捕,而不可以在外函數(shù)中捕異樣。,能夠在外捕,而且是最常的用法6.只需程序中沒有Aa1=a2;和Aa1(a2);形式的代,A的拷結構函數(shù)就不會被用。,參數(shù)或函數(shù)返回也用拷結構函數(shù)在protected承方式下,派生象的指不可以直接成指向基象的指。,否基中的公有成由不行可,限被放大8.假定靜成函數(shù)頂用了一個函數(shù)f,那么f必定不是虛函數(shù)。,靜成函數(shù)不可以是虛函數(shù),因虛函數(shù)進口需要在保留在象中的虛函數(shù)表中,而靜成函數(shù)不屬于象。假定要例化一個含有引用型數(shù)據(jù)成的,那么只好使用結構函數(shù)初始化列表來初始化數(shù)據(jù)成。,沒有的法結構函數(shù)的函數(shù)體中,不可以使用return句;但在的自型化函數(shù),必有return句。三、回復以下各〔每4分,共20分〕1.例明static關字的用法和相目的(起碼3種)。f(){staticinta;?}函數(shù)體內(nèi)的靜量,每次用函數(shù)保持不staticinta;全局的靜量,束作用域所在文件classA{staticinta;?};A的靜成,似全局量,需用A::a2.例明的數(shù)據(jù)成在哪些狀況下必在初始化列表中行初始化(起碼3種)。基不供給無參的結構函數(shù)成象不供給無參的結構函數(shù)有常量成或引用成例明虛承的作用和目的。-2-虛構繼承的目的是使基類在派生類中只保留一個副本進而防備二義性舉例說明成員函數(shù)A&f()const;和成員函數(shù)A&f();的差別。A&f()const是常函數(shù),隱含的this指針是常指針,所以在f中不可以改正對象成員的值。舉例略有類A的對象a,隨意給出一種解決方案,使得程序支持下邊的表達式:a=10+a;classA{A(int);//變換結構函數(shù)friendconstAoperator+(constA,constA);//重載+};四、指出以下程序代碼中存在的錯誤或缺少,說明原由。〔每題5分,共10分〕1.#include<iostream.h>classB:publicAvoidmain()classA{{{public:public:A*p=newB;virtual~A(){}virtualvoidg()p->f();virtualvoidf(){cout<<"B::g()"<<endl;}p->g();{cout<<"A::f()"<<endl;}virtualvoidk()p->k();virtualvoidg(){cout<<"B::k()"<<endl;}deletep;{cout<<"A::g()"<<endl;}};}};答:函數(shù)k在A中沒有定義,履行p->k();時要依據(jù)p的種類在A中查k的信息2.#include<iostream.h>classA{#include<string.h>public:classA;~A(){}classB:publicA{virtualvoidoutput(){}public:};B(constchar*info){voidmain()m_buf=newchar[256];{strcpy(m_buf,info);}A*pa=newB("hello!");~B(){delete[]m_buf;}pa->output();virtualvoidoutput(){cout<<m_buf;}deletepa;private:}char*m_buf;};答:A的析構函數(shù)應定義為虛函數(shù),否那么B的析構函數(shù)不會被調(diào)用,m_buf也不會被開釋-3-五、寫出下邊程序的運轉結果〔每題5分,共10分〕1.#include<iostream.h>classB:publicA{voidmain()classA{public:{public:~B(){--count;Out();}{A():count(1){}virtualA*Copy()const{Bb;virtual~A(){}B*p=newB(*this);A*a1=&b;virtualA*Copy()const=0;++p->count;a1->Out();virtualvoidOut()const=0;returnp;a1=a1->Copy();protected:}a1->Out();intcount;virtualvoidOut()constdeletea1;};{cout<<count<<endl;}}};}答:12102.#include<iostream.h>classB:publicA{classA{public:public:B(A&a):obj(a),A(1){}A(intn):num(n){Out();}voidOut(){obj.Out();}A(constA&rhs):num(rhs.num){Out();}private:voidOut(){cout<<num<<endl;}Aobj;public:};intnum;voidmain(){};Aa(8);Bb1(a);Bb2(b1);b2.Out();}答:818188-4六、閱讀下邊兩個類的定義和局部實現(xiàn)代碼,達成3個問題。〔共10分〕#include<iostream.h>classB{intmain()classA{public:{public:B(intn);Bb1(1);A(intn):value(n){}voidDisplay()constb1.Display();voidDisplay()const{aA.Display();}Bb2(2);{cout<<"Value="<<value<<endl;}private:b2.Display();private:AaA;return0;intvalue;};}};[3分]實現(xiàn)類B的結構函數(shù),使得程序的輸出為:Value=1Value=2答:B(intn):aA(n)2.[3分]假定main函數(shù)中增添了語句Bb3(b1);針對本例,說明能否有必需以公有方式自定義并實現(xiàn)類B的拷貝結構函數(shù),為何?答:不需要,因為類B及基類A中不存在引用或指針成員,使用默認的拷貝結構函數(shù)就能夠。3.[4分]在不變動類A和main函數(shù)的前提下,以繼承的方式從頭定義并實現(xiàn)類B,使得程序的輸出結果不變。答:classB:publicA{public:B(intn):A(n);voidDisplay()const{A::Display();}};七、(共20分,每問題10分)某程序員為了靈巧地對各樣的給定的曲線函數(shù)f(x)畫出其曲線圖形,設計并局部實現(xiàn)了一個曲線類curve,該類的成員數(shù)據(jù)中,count代表坐標點的個數(shù),pxs代表的數(shù)組寄存這些坐標點的橫坐標,pys代表的數(shù)組寄存利用f(x)計算獲得的這些坐標點的縱坐標。因為不一樣曲線的計算公式f(x)是不一樣的,該程序員希望曲線函數(shù)的種類能夠經(jīng)過繼承curve類的方式隨意增添,增添一個新的f(x)時不改變curve類中的內(nèi)容,也不改變利用curve類進行圖形繪制的算法。已局部達成的curve類定義和實現(xiàn)以下:classcurve{public:voidsetPxs(){/*把獲得的橫坐標數(shù)據(jù)寄存在pxs代表的數(shù)組中,并為count置值*/}double*getPxs()const{returnpxs;}intgetCount()const{returncount;}-5-double*getPys()const;private:double*pxs;double*pys;intcount};1、請依據(jù)該程序員的設計企圖給出成員函數(shù)getPys的完好實現(xiàn)。實現(xiàn)過程中,能夠為curve類增添其余成員。能夠假定setPxs函數(shù)已經(jīng)完好實現(xiàn),不需要考慮曲線的繪制和顯示。答:classcurve{public:voidsetPxs(){/*把獲得的橫坐標數(shù)據(jù)寄存在pxs代表的數(shù)組中,并為count置值*/}double*getPxs()const{returnpxs;}intgetCount()const{returncount;}double*getPys()const;virtualdoublef(double)=0;private:double*pxs;double*pys;intcount};double*curve::getPys()const{if(pys==NULL)pys=newdouble[count];for(inti=0

溫馨提示

  • 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

提交評論