復習必背c(20211012035058)_第1頁
復習必背c(20211012035058)_第2頁
復習必背c(20211012035058)_第3頁
已閱讀5頁,還剩10頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、C+ 面向對象 的程序設計考前 必背的名詞解釋和簡答題1. 封裝 封裝是將數據和代碼捆綁到一起,防止了外界的干擾和不確定性。例如 C+中的 類,它定義了該集合中每個對象所共有的屬性和方法。2. 繼承 繼承是讓某個類型的對象獲得另一個類型的對象的特征。例如:C+中子類對父 類的繼承,子類具有父類的特性,同時還可以擁有自己的新特性。3. 多態 多態是指不同類型的對象接收相同的消息時產生不同的行為。多態機制使具有不 同內部結構的對象可以共享相同的外部接口,通過這種方式 減小代碼的復雜度。 例如函數的重載。4. 什么是 this 指針?為什么要用 this 指針?this 指針是類中的一個特殊指針,當

2、類實例化時, this 指針指向對象自己; 而 在類的聲明時,指向類本身。通過它不僅可以提升成員函數操作的效率, 而且能 簡化運算符重載代碼。5. 表達公有、私有、保護成員在類中、類 外 和 對 象 中 的 訪 問 權 限 。類 中 的 關 鍵字 public, private, protected 聲 明 了 類 中 的 成 員 與 類 外 之 間 的 關 系,稱為訪問權限 。 對于 public 成員來說,他們是公有的,可以 在類外和對象中訪問。 對于 private 成員來說,他們是私有的,不能在類 外和對象中訪問,數據成員只 能由類中的函數使用,成員函數只允許在類中 調用。 對于 pr

3、otected 成員來說,他們是受保護的,具有半公開性質,可 以在類中與子 類中訪問。6. 構造函數和析構函數的作用是什么? 構造函數的功能是在創立對象時,給數據成員賦初值,即給對象初始化 構函數的功能是釋放一個對象,在對象刪除前,用來做一些內存釋放等清理工 作。 7. 什么是類的繼承和派生? 繼承是指一個事物可以繼承其父輩全部或局部的特性, 同時本身還有自己的 特性。 當一個新類從一個已定義的類中派生后,新類不僅繼承了原有類的屬 性和方法, 并且還擁有自己新的屬性和方法,稱為類 的繼承和派 生。 8. 派生類 public 繼承方式有那些特點? 1 在派生類中, 基類的公有成員、 保護成員和

4、私有成員的訪問屬性 保持不變。 在派生類中,基類的私有成員是無法訪問的,雖然基類的私有成 員被派生類繼承了。 2派生類對象只能訪問派生類和基類的公有成員。 9. 派生類 protected 繼承方式有那些特點?1在派生類中, 基類的公有成員、 保護成員的訪問屬性都變成了保護的。2在保護繼承方式下,派生類中仍可以訪問基類的公有成員和保護成員, 但 基類的私有成員是無法訪問的。3派生類對象只能訪問派生類的公有成員,不能訪問基類的任何成 員。 10. 派生類 private 繼承方式有那些特點?1在派生類中,基類的公有成員、保護成員和私有成員的訪問屬性都將變成 私有的。 2私有繼承方式下,派生類中仍

5、可以訪問基類的公有成員和保護成員,但基 類的私有成員是無法訪問的。3派生類對象只能訪問派生類的公有成員,不能訪問基類的任何成 員。 11. 在定義派生類的過程中,如何對基類的數據成員進行初始 化? 通過調用基類的構造函數來設定基類的數據成員的初值。 格式為 <派生類 名 > 形參表 :基類 1 參數表 ,基類 2 參數表對象成員 1參數表,對象成員 2 參數表12.什么是虛基類?它的作用是什么?虛基類是指在派生類中指定的基類是虛繼承的方式。使用虛基類的目的是在多重派生中使用共有基類時, 在派生類中只有一個拷貝從 而解決有多個基 類拷貝所產生的二義性問題。13. 在函數調用過程中,什

6、么是賦值傳遞,什么是引用傳遞?賦值傳遞是將實參賦值給形參變量,然后執行被調函數體。 賦值傳遞有兩種形式, 一是直接傳常量或變量值,二是傳變量的地址。 引用傳遞是將形 參引用給形參,需要形參與實參指的是同一變量。14. #include <filename.h> 和 #include “ filename.h 有什么區 別? 對于#in eludevfile name.h> ,編譯器從標準庫路徑幵始搜索 filename.h 。 對于 #include “filename.h , 編譯器從用戶的工作路徑開始搜索 filename.h 。15. const 有什么用途?請至少說明

7、兩種 1 可以定義 const 常量2 const 可以修飾函數的參數、 返回值, 甚至函數的定義體。 被 const 修 飾 的東西都受到強制保護, 可以預防意外 的變動, 能提高程 序的健壯 性。 16. 類的指針成員為什么要用 new 另辟內存空間? 為了保證類的封裝性, 類中的指針成員所指向的內存空間必須在類的定義中 自行獨立開辟和釋放。、填空1在類中必須聲明成員函數的原型,成員函數的現 局部可以寫在類外。2如果需要在被調函數運行期間,改變主調函數中實參變量的值,那么函數的形 參應該是 引 用 類型或 指 針 類 型。 3抽象 類只能作為基類使用,而不能聲明它的對象。 4進行函數重載時

8、,被重載的同名函數如果都沒有用const 修飾,那么它們的形參 個數 或 類型 必須不同。5通過一個常 對象只能調用它的常成員函數,不能調用其他成員函數。6 函數 的 遞 歸 調 用 是 指 函 數 直 接 或 間 接 地 調 用 自 身 。 7拷貝構造 函數 的 形參 必須 是本 類對象的 引、單項選擇題每題 2 分,共 40分1關于C+與 C語言關系的描述中, D是錯誤的。的C.C+語言對C 語言進行了一些改良D.C+語言和C語言都是面向對象的2、:int m=10;以下表示引用的方法中, A是正確的。A. int&x=m;B.int&y=10;C. int &z;

9、D. float&t=&m;3、考慮下面的函數原型聲明:voidtestDefaulParam(inta,intb=7,char-y 怙z='*'下面函數調用中,A. C語言是C+語言的一個子集B. C語言與C+語言是兼容不合法的是 C。A testDefaulParam(5);B testDefaulParam(5,8);C testDefaulParam(5,'#');D testDefaulParam(0,0,'*'4、系統在調用重載函數時往往根據一些條件確定哪個重載函數被調用,在以下 選項中,不能作為依據的是 A 。A.

10、函數的返回值類型B.參數的類型C.函數名稱D.參數個數 5、以下有關C+類的說法中,不正確的選項是D 。A. 類是一種用戶自定義的數據類型B. 只有類中的成員函數或類的友元函數才能存取類中的私有成員C.在類中,D.在類中,如果不做特如果不做特別說明,所有成員的訪問權限均為私有的別說明,所有成員的訪問權限均為公用的6、 X 類,那么當程序執行到語句 X array3; 時,調用了 D 次 構造函 數。 A 0B 1C 2D 37 、 有 關 析 構 函 數 的 說 法 , 不 正 確 的 是 B 0A.析構函數有且僅有一個B. 析構函數和構造函數一樣可以有形參C. 析構函數的功能是在系統釋放對象

11、之前作一些內存清理工作D.析構函數 無任何函數類型8、類定義的內容允許被其對象無限制地存取的是C 0A private 部 分B protected 部 分C public 部D. 以上都不對 9、關于常數據成員的說法,不正確的選項是A. 常數據成員的定義形式與一般常變量的定義形式相同,只不過常數據成員的定義必須出現在類體中B. 常數據成員必須進行初始化,并且不能被更新C.常數據成員通過構造函數的成員初始化列表進行初始化 D.常數據成員可以在定義時直接初始化10、運用運算符 delete 刪除一個動態對象時()。A.系統首先為該動態對象調用構造函數,再釋放其占用的內存B.系統首先釋放該動態對象

12、占用的內存,再為其調用構造函數C.系統首先為該動態對象調用析構函數,再釋放其占用的內存D.系統首先釋放動態對象占用的內存,再為其調用析構函數11、 可以在類外用 p.a的形式訪問派生類對象 p的基類成員 a,其中a是 (D )0 A.私有繼承的公用成員B.公用繼承的私有成員 C.公用繼承的保護成員D.公用繼承的公用成員 12、在公用繼承方式下,有關派生類對象和基類對象的關系,不正確的表達是()0A.派生類的對象可以賦給基類的對象B.派生類的對象可以初始化基類的引用C.派生類的對象可以直接訪問基類中的成員D.派生類的對象的地址可以賦給指向基類的指針 13、設置虛基類的目的是( B )05、類的靜

13、態成員分為和06、 運算 符 重 載要 求 保 持 其 原來 的 操 作 數 個數、和語法結構07 、 通 過 關 鍵 字可 以 聲 明 模 板 , 通 過 關 鍵 個類型關鍵字。8 、 列 出 C+ 中 兩 種 用 戶 自 定 義 的 數 據 類 型: 、 。 9、構造函數的作 用是。 10 、后置自增運算符“ + 重載為類的成員函數設類名為A的形式為。A.簡化程序B.消除二義性C.提高運行效率D.減少目標代碼14、在C+中,用于實現動態多態性的是D。A內聯函數B . 重 載 函 數C . 模 板 函數D.虛函數15、不能說明為虛函數的是。A.析構函數B.構造函數C.類的成員函數D.以上都不

14、對 16、如果一個類至少有一個純虛函數,那么就稱該類為。A.抽象類B . 派 生 類C . 純 基類D.以上都不對 17、下面關于友兀的描述中,錯誤的選項是。A.友元函數可以訪問該類的私有數據成員B. 個類的友元類中的成員函數都是這個類的友元函數C.友元可以提高程序的運行效率D.類與類之間的友元關系可以繼承18、以下運算符中,運算符在C+中不能被重載。A &&B C :Dnew19、模板的使用實際上是將類模板實例化成一個()。A 函 數 B 對 象C.類D.抽象類20、假定 MyClass 為一個類 ,那么 該 類的 拷貝構造函 數的聲明 語句 為 ()。 A. MyClass

15、(MyClass x)B. MyClass&(MyClass x) C. MyClass(MyClass &x)D. MyClass(MyClass *x)二、填空題(前 16 個空,每空 1 分,后 2 個空,每空 2 分,共 20 分) 1、類和對象的關系可表述為:類是對象的,而對象那么是類的。2、在C+中,三種繼承方式的說明符號為 、 和 , 如果不加說明,那么默認的繼承方式為。3、如 果 只 想 保 留 公 共 基 類 的 一 個 復 制 , 就 必 須 使 用 關 鍵字把這個公共基類聲明為虛基類。4、假設要把 void fun() 定義為類 A 的友元函數,那么應在類

16、 A 的定義中參加語 句5、類的靜 態 成 員 分為和。6、 運算符重載要求保持其原來的操作數個數、 、 和語法結構。7、 通 過 關 鍵 字可 以 聲 明 模 板 , 通 過 關 鍵個類型關鍵字。8 、 列 出 C+ 中 兩 種 用 戶 自 定 義 的 數 據 類 型: 、 。 9、構造函數的作 用是10、后置自增運算符“+重載為類的成員函數設類名為A的形式為、單項選擇題每題2 分,共 40 分1-5 D A C6-10 D B C DC 11-15D C B D16-20 A D C C C二、填空題前16 個空,每空 1 分,后 2 個空,每空 2 分,共 20 分2publicpriv

17、ateprotected合性private543靜態數據成員優先級friend7virtualvoid fun(A靜態成員函數Template&a)6class(typename)8結構體簡單解釋什么是面向對象程序設計的封裝性答:對象是一個封裝體,在其中封裝了該對象所具有的屬性和操作。對象作為獨立的根本單元,實現了將數據和數據處理相結合的思想。此外,封裝特性還 表達在可以限制對象中數據和操作的訪問權限,從而將屬性“隱藏在對象內 部,對外只呈現一定的外部特性和功能。封裝性增加了對象的獨立性,C+!過建立數據類型類,來支持封裝和數據隱藏。一個定義完好的類一旦建立, 就可看成完全的封裝體,作

18、為一個整體單元使用,用戶不需要知道這個類是如 何工作的,而只需要知道如何使用就行。另一方面,封裝增加了數據的可靠性, 保護類中的數據不被類以外的程序隨意使用。這兩個優點十分有利于程序的調 試和維護。422C+編譯器怎樣對標識符進行解析 ?答:編譯器對標識符的解析分兩步,第一步查找在聲明中用到的標識符,特別 是函數成員聲明中用到的參數類型,第二步是函數成員體內的標識符。4.2.3 為什么說類與對象的概念是客觀世界的反映? 答:客觀世界的事物都具有某些屬性和行為 或操作,具有相同屬性和行為的事物可以歸屬于一類, 用分類的方法可以提高認識事物的效率。C+中定義的類那么是通過抽象的方法將某一類事物共有

19、的靜態特征屬性和動態特征行為概括出來并加以描述, 而對象是類的具體實現,所以說類與對象的概念是客觀世界的反映。4.2.4 什么叫類域?為什么說類域是抽象的?答:類域是類體所包括的范圍。每個類定義都引入了一個獨立的類域,在類域 中說明的標識符僅在該類的類域中有效。由于類只是一個說明,看上去有數據, 有函數,有類型定義,但是它并非實體,不分配內存,當然也不能運行。所以 說類域是抽象的引用作為函數參數時為什么能實現兩個實參之間的數據交換?為什 么對應實參不能為引用?為什么返回值為引用的函數可以作為左值? 答:引用變量是其關聯變量的別名,二者在內存中占據同一個存儲單元。在一 個以引用作為參數的函數中,

20、交換兩個參數的值,實際上就是交換兩個實參的 值。如果函數的參數是引用,調用時需要取得實參的地址,而實參如果已經是 一個地址,再進行引用將產生錯誤,故對應實參不能為引用。函數返回引用實際是指明返回了相應的關聯變量,所以聲明返回值為引用 的函數實際上是將關聯變量作為左值參與運算。4.2.6 什么是缺省的構造函數?缺省的構造函數最多可以有多少個?答:如果在類定義中不顯式地定義構造函數,C+編譯器會自動產生一個缺省的構造函數,不過該函數不做具體的初始化工作。只要構造函數是無參的或者只 要各參數均有缺省值的,C+編譯器都認為是缺省的構造函數。缺省的構造函數 只能有一個。4.2.7 拷貝構造函數用于哪三個

21、方面? 答:1用類的一個對象去初始化該類的另一個對象時使用。2當函數的形參是類的對象,調用函數時,進行形參與實參結合時使用。 3 當函數的返回值是類對象, 函數執行結束返回調用者時使用。4.2.8 寫出含有對象成員的類的構造函數的格式, 并做簡單說明。 答: C+ 中對含對象成員的類對象的構造函數有固定的格式:類名: 構造函數名 參數總表: 對象成員 1參數名表 1 ,對象成員 2參數名表2,對象成員n參數名表n號后用逗號隔幵的是要初始化的對象成員,附在后面的參數名表1,,參數名表n依次為調用相應對象成員所屬的構造函數時的實參表。這些表中的參數通常來自冒號前的參數總表,但沒有類型ri o429

22、所有類對象未重載的賦值運算符“=是怎樣工作的?為什么它可以進行連續賦值? 答:對所有的類對象,未重載的賦值運算符“=稱作缺省的按成員拷貝賦值操作符,同類對象之間可以用“ =直接拷貝。因為缺省的賦 值操作返回一個對象的引用,所以它可以進行連續賦值。為什么在友元函數的函數體內訪問對象成員時, 必須用對象名加運算符 “ 再加對象成員名?答:友元函數不是類的成員函數,在函數體中訪問對象的成員,必須用對象名 加運算符“ . 加對象成員名。這一點和一般函數一樣。重載復數運算符時,采用下面友元函數聲明:friend Complex operator+(Complex &c1,Complex &

23、;c2); 為什么不能用于“實數 +復數?怎樣改良才能適用?為什么? 答:使用引用類型變量作為運算符重載函數的參數,身為左值的實數類型實參 不能被轉換為復數,編譯時無法通過。添加 const 說明,使實數到復數的轉換 隱式地在一份拷貝上進行,那么可以實現“實數+復數運算。修改后的說明為 :friend Complex operator+(const Complex &c1, const Complex &c2);類的靜態數據成員與函數中的靜態成員有何異同?答:類的靜態成員為其所有對象共享,不管有多少對象,靜態成員只有一份存于公用內存中,為該 類所有對象公用。函數中的靜態變量也位

24、于公用內存中,不隨函數調用而重新 分配,所以總是保存上次進入并執行該函數后留下的信息C+中結構、聯合與類三者間有何異同?答:在C+中結構(structure )與類幾乎是完全一樣的類型,差異僅僅在于缺 省情況下結構的成員為公有的。聯合(union )是C+的導出數據類型,在語法 與功能上類似于結構,二者的區別是:結構變量的各成員同時被分配了各自獨 立的內存區,而聯合變量的各個成員的存儲開始地址都相同,所以在任一時刻 聯合變量只能存儲一個成員。對象的第一特征是封裝,那么由對象組成的面向對象的程序怎樣建立各對 象之間的有效聯系?面向對象程序的組織與面向過程有什么不同?答:因為對象的操作主要用來響應外來消息并為其他對象提供效勞,所以面向對象的程 序利用消息傳遞

溫馨提示

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

評論

0/150

提交評論