青島科技大學C++程序設計基礎期末復習題_第1頁
青島科技大學C++程序設計基礎期末復習題_第2頁
青島科技大學C++程序設計基礎期末復習題_第3頁
青島科技大學C++程序設計基礎期末復習題_第4頁
全文預覽已結束

下載本文檔

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

文檔簡介

不定項選擇題1.設計一個自定義類時,需要在屏幕上顯示或向文件寫入類對象的數據,最佳選擇方法是C。A.為屏幕顯示和文件寫入各自設計一個成員函數。B.為屏幕顯示和文件寫入統(tǒng)一設計一個成員函數。C.重載插入運算符(<<)。D.重載提取運算符(>>)。2.關于異常處理,那些說法是錯誤的D。A.在C++程序中,由throw表達式拋出異常,而該表達式應直接或間接地被包含在try塊中。B.當拋出異常后,尋找匹配的catch子句有固定的過程:逆著程序函數的調用鏈返回,稱為棧展開(StackUnwinding)。C.當某條語句拋出異常時,跟在其后的語句將被跳過,但析構函數仍然執(zhí)行,所以應該在析構函數中釋放資源。D.catch子句實際是一個特殊的函數。3.下列關于動態(tài)資源分配的說法中錯誤的是B。A.動態(tài)分配的資源不僅包括內存,還包括文件。B.動態(tài)內存分配的優(yōu)點在于可以隨時給數組分配所需的內存而不會失敗。C.動態(tài)分配的資源通常要求在析構函數中釋放。D.對含有動態(tài)分配的數據成員的類對象應該采用深復制。4.下列有關模板的描述那些是錯誤的C。A.模板把數據類型作為一個設計參數,稱為參數化程序設計。B.模板參數除模板類型參數外,還有非類型參數。C.類模板與模板類是同一概念。D.使用時,模板參數與函數參數相同,是按位置而不是名稱對應的。5.關于多態(tài),下面那些說法是正確的ABCD。A.多態(tài)分靜態(tài)的(編譯時)和動態(tài)的(運行時)。B.運行時的多態(tài)與類的層次結構有關。C.在基類定義了虛函數后,在派生類中重新定義時可以不加關鍵字virtual。D.僅使用虛函數并不能實現運行時的多態(tài)性,還必須采用指針或引用來調用才能真正實現運行時的多態(tài)性。二、填空題1、通過抽象找出同一類對象的共同屬性和行為,形成類。2、假設Point為點的類有兩個數據成員分別為點的橫坐標和縱坐標,有語句PointA(5,10);要聲明一個指向A的指針Ptr,所用的語句是Point*Ptr; Ptr=&A;或Point*Ptr=&A;。3、拷貝構造函數使用已經存在的對象,去初始化同類的一個新對象,其形參必須是本類對象的引用。4、遞歸調用是函數直接或間接的調用自身。5、含有純虛函數的類是抽象類。6、在類中將抽象出的數據成員、代碼成員結合成一個獨立的系統(tǒng)單元,稱為封裝。7、多繼承且有內嵌對象時的構造函數調用次序是先調用基類構造函數,調用順序按照它們被繼承時聲明的順序(從左向右),再調用成員對象的構造函數,調用順序按照它們在類中聲明的順序,最后調用派生類的構造函數體中的內容。8、運算符重載時,其函數名由關鍵字operator和重載的運算符構成。成員函數重載雙目運算符時,左操作數是對象,右操作數是該函數的參數。9、C/C++中的多維數組用的是一個遞歸的定義,即多維數組的基本定義是數組構成的數組,三維數組的元素是二維數組。10、單鏈表的結點包含兩個域:數據域和指針域。使用鏈表的最大的優(yōu)點是用多少就開多少空間,即使是動態(tài)數組也做不到這一點。11、純虛函數定義時在函數參數表后加=0,它表明程序員對函數體不定義,其本質是將指向函數體的指針定為空指針。三、分析下列程序中的錯誤,說明出錯原因,并改正。1、#include<iostream>usingnamespacestd;classA{intx;public:A(inta){x=a;fun();}virtualvoidfun()=0;};classB:publicA{public:B(intb):A(b){}voidfun(){}};voidmain(){ Aaa(5);Bbb(8);}答:Aaa(5)錯誤;抽象類不能定義對象;把virtualvoidfun()=0;改為virtualvoidfun(){}2、#include<iostream>usingnamespacestd;classPart{public:Part(){val=0;Cout<<"CallingPartconstructor()"<<endl;}Part(inti);private:intval;};classWhole{public: Whole();Whole(intk);private:Partone;Parttwo;intdate;};Part::Part(inti){val=i;Cout<<"CallingPartconstructor(int)"<<endl;}Whole::Whole(){date=0;cout<<"CallingWholeconstructor()"<<endl;}Whole::Whole(intk){date=k;cout<<"CallingWholeconstructor(int)"<<endl;}intmain(){ Partp1,p2(2); Wholew1(3,4,5); return0;}答:Whole(intk);錯誤,應該給兩個內嵌對象傳遞參數,函數原型改為Whole(inti,intj,intk);函數實現改為Whole::Whole(inti,intj,intk):two(i),one(j){ date=k;cout<<"CallingWholeconstructor(int)"<<endl;}四、編程題定義一個基類BaseClass,從它派生出類DerivedClass,BaseClass有成員函數fn1()、fn2(),DerivedClass也有成員函數fn1()、fn2(),在主程序中定義一個DerivedClass的對象,分別用DerivedClass的對象以及BaseClass和DerivedClass的指針來調用fn1()、fn2(),寫出運行結果并適當分析。(函數fn1()、fn2()可以分別輸出相應的類和函數名)答:#include<iostream.h>usingnamespacestd;classBaseClass{public:voidfn1();voidfn2();};voidBaseClass::fn1(){cout<<"調用基類的函數fn1()"<<endl;} voidBaseClass::fn2(){cout<<"調用基類的函數fn2()"<<endl;} classDerivedClass:publicBaseClass{public:voidfn1();voidfn2();}; voidDerivedClass::fn1(){cout<<"調用派生類的函數fn1()"<<endl;} voidDerivedClass::fn2(){cout<<"調用派生類的函數fn2()"<<endl;} voidmain(){DerivedClassaDerivedClass; DerivedClass*pDerivedClass=&aDerivedClass; BaseClass*pBaseClass=&aDerivedClass; aDerivedClass.fn1();aDerivedClass.fn2();

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論