版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、C+習題參考答案第 1xx 面向對象程序設計概論一、名詞解釋抽象封裝消息【問題解答】面向對象方法中的抽象是指對具體問題(對象)進行概括,抽出一類對象 的公共性質并加以描述的過程。面向對象方法中的封裝就是把抽象出來的對象的屬性和行為結合成一個獨 立的單位,并盡可能隱蔽對象的內部細節(jié)。消息是面向對象程序設計用來描述對象之間通信的機制。一個消息就是一 個對象要求另一個對象實施某種操作的一個請求。二、填空題(1)目前有面向過程的結構化程序設計方法和面向對象的程序設計方法兩 種重要的程序設計方法。( 2)結構化程序設計方法中的模塊由順序、選擇和循環(huán) 3 種基本結構組 成。(3)在結構化程序設計方法中,程
2、序可表示為程序 =數(shù)據(jù)結構 +算法;而面 向對象的程序設計方法,程序可表示為程序 =對象 +消息。(4)結構化程序設計方法中的基本模塊是過程;而面向對象程序設計方法 中的基本模塊是類。(5)面向對象程序設計方法具有抽象性、封裝性、繼承性和多態(tài)性等特 點。三、選擇題(至少選一個,可以多選)(1) 面向對象程序設計著重于(B)的設計。A. 對象B.類C算法D數(shù)據(jù)( 2)面向對象程序設計中,把對象的屬性和行為組織在同一個模塊內的機 制叫做( C)。A. 抽象B繼承C封裝D.多態(tài)(3)在面向對象程序設計中,類通過(D)與外界發(fā)生關系。A.對象B.類C消息D接口( 4)面向對象程序設計中,對象與對象之間
3、的通信機制是( C)。A.對象B.類C消息D接口(5) 關于C+與 C語言的關系的描述中,(D)是錯誤的。A. C語言是C+的一個子集B. C語言與C+是兼容的C. C+對C語言進行了一些改進 D. C+和C語言都是面向對象的【結果分析】C語言是面向過程的。C+語言是一種經(jīng)過改進的更為優(yōu)化的 C語言,是- 種混合型語言,既面向過程也面向對象。(6) 面向對象的程序設計將數(shù)據(jù)結構與(A)放在一起,作為一個相互依 存、不可分割的整體來處理。A.算法B信息C數(shù)據(jù)隱藏D.數(shù)據(jù)抽象(7)下面(A)不是面向對象系統(tǒng)所 包含的要素。A.重載B對象C類D繼承【結果分析】面向對象 =對象+類+繼承+消息+多態(tài)(
4、 8)下面說法正確的是( BC)。A. 將數(shù)據(jù)結構和算法置于同一個函數(shù)內,即為數(shù)據(jù)封裝B. 一個類通過繼承可以獲得另一個類的特性C. 面向對象要求程序員集中于事物的本質特征,用抽象的觀點看待程序 D. 同一消息為不同的對象接受時,產(chǎn)生的行為是一樣的,這稱為一致性【結果分析】面向對象程序設計方法具有抽象性、封裝性、繼承性和多態(tài)性等特點。將 數(shù)據(jù)結構和算法置于同一個類內,即為數(shù)據(jù)封裝。同一消息為不同的對象接受 時,產(chǎn)生的行為可能是不一樣的,這稱為多態(tài)性。(9)下面說法正確的是( AD)。A. 對象是計算機內存中的一塊區(qū)域,它可以存放代碼和數(shù)據(jù)B. 對象實際是功能相對獨立的一段程序C. 各個對象間的
5、數(shù)據(jù)可以共享是對象的一大優(yōu)點D. 在面向對象的程序中,對象之間只能通過消息相互通信【結果分析】對象是計算機內存中的一塊區(qū)域。在對象中,不但存有數(shù)據(jù),而且存有代 碼,使得每個對象在功能上相互之間保持相對獨立。對象之間存在各種聯(lián)系, 但它們之間只能通過消息進行通信。四、判斷題(1)在高級程序設計語言中,一般用類來實現(xiàn)對象,類是具有相同屬性和 行為的一組對象的集合,它是創(chuàng)建對象的模板。( V )(2)C+語言只支持面向對象技術的抽象性、封裝性、繼承性等特性,而 不支持多態(tài)性。(X)【結果分析】C+語言不僅支持面向對象技術的抽象性、封裝性、繼承性等特性,而且支 持多態(tài)性。(3) 面向對象程序設計中的消
6、息應該包含 如何做”的信息。(X)【結果分析】消息是面向對象程序設計用來描述對象之間通信的機制。向對象 “發(fā)送消 息”只需告訴對象做什么,對象根據(jù)這個消息決定如何做。(4) 一個消息只能產(chǎn)生特定的響應效果。( X )【結果分析】當一個對象發(fā)出消息時,由于接收對象的類型可能不同,所以,它們可能 做出不同的反應。這樣,一個消息可以產(chǎn)生不同的響應效果,這種現(xiàn)象叫做多 態(tài)。(5) 類的設計和類的繼承機制實現(xiàn)了軟件模塊的可重用性。(V )(6) C+語言和Java語言均不是一個純正的面向對象的程序設計的語言。(X)【結果分析】Java語言是一個純正的面向對象的程序設計語言。(7) 學習C+4語言是學習面
7、向對象的程序設計方法的唯一途徑。(X )【結果分析】程序設計方法是獨立于具體程序設計語言的一種技術,學習C+語言是學習面向對象程序設計方法的重要途徑之一。(8) 在C+語言中,類是支持數(shù)據(jù)封裝的工具。( V )五、簡答題(1) 什么是結構化程序設計方法它有哪些優(yōu)點和缺點問題解答】結構化程序設計方法著眼于系統(tǒng)要實現(xiàn)的功能,從系統(tǒng)的輸入輸出出發(fā), 分析系統(tǒng)要做哪些事情,進而考慮如何做這些事情,自頂向下地對系統(tǒng)的功能 進行分解,來建立系統(tǒng)的功能結構和相應的程序模塊結構,有效地將一個較復 雜的程序系統(tǒng)設計任務分解成許多易于控制和處理的子任務,便于開發(fā)和維 護。隨著程序規(guī)模與復雜性的增長,這種面向過程的
8、結構化程序設計方法存在 明顯的不足之處。首先是數(shù)據(jù)安全性問題。由于數(shù)據(jù)被每個模塊所共用,因此 是不安全的,一旦出錯,很難查明原因。其次是可維護性及可重用性差。它把 數(shù)據(jù)結構和算法分離為相互獨立的實體,一旦數(shù)據(jù)結構需要改變時,常常要涉 及整個程序,修改工作量極大并容易產(chǎn)生新的錯誤。每一種相對于老問題的新 方法都要帶來額外的開銷。另外,圖形用戶界面的應用程序,很難用過程來描 述和實現(xiàn),開發(fā)和維護也都很困難。(2)什么是面向對象程序設計方法它有哪些優(yōu)點【問題解答】面向對象的程序設計方法中,將程序設計為一組相互協(xié)作的對象而不是一 組相互協(xié)作的函數(shù)。在程序中,屬性用數(shù)據(jù)表示,用來描述對象靜態(tài)特征;行 為
9、用程序代碼實現(xiàn),用來描述對象動態(tài)特征??梢?,在面向對象的程序設計方 法中,對象是數(shù)據(jù)結構和算法的封裝體。對象之間存在各種聯(lián)系,它們之間通 過消息進行通信。程序可表示為:程序 =對象 +消息在面向對象程序設計中應著重于類的設計。類正是面向對象語言的基本程 序模塊,通過類的設計來完成實體的建模任務。類通過一個簡單的外部接口與 外界發(fā)生關系。一個類中的操作不會處理到另一個類中的數(shù)據(jù),這樣程序模塊 的獨立性、數(shù)據(jù)的安全性就有了良好的保障。程序的執(zhí)行取決于事件發(fā)生的順 序,由順序產(chǎn)生的消息來驅動程序的執(zhí)行。不必預先確定消息產(chǎn)生的順序,更 符合客觀世界的實際。并且面向對象程序設計方法提供了軟件重用、解決大
10、問 題和復雜問題的有效途徑,具有抽象性、封裝性、繼承性和多態(tài)性等特點。( 3)結構化程序設計方法與面向對象程序設計方法在對待數(shù)據(jù)結構和算法 關系上有什么不同【問題解答】結構化程序設計方法中,把數(shù)據(jù)結構和算法分離為相互獨立的實體;而在 面向對象程序設計中,數(shù)據(jù)結構和算法封裝在一起,結合成一個獨立的單位, 即對象,并盡可能隱蔽對象的內部細節(jié)。對象的私有屬性只能由這個對象的行 為來讀取和修改,與外部的聯(lián)系通過公有行為充當外部接口。第2章從C到C+一、名詞解釋引用 xx 函數(shù)重載函數(shù)【問題解答】所謂引用就是給對象取一個別名,使用該別名可以存取該對象。換句話說 是使新對象和原對象共用一個地址。內聯(lián)函數(shù)是
11、使用 inline 關鍵字聲明的函數(shù)。重載函數(shù)指在同一個作用域內名字相同而參數(shù)不同的函數(shù)。重載函數(shù)通常 用來對具有相似行為而數(shù)據(jù)類型或數(shù)據(jù)個數(shù)不同的操作提供 個通用的名稱。二、填空題(1)一般情況下,用C+語言編寫的程序是由函數(shù)加上類組成的。(2) C+有兩種注釋符號,一種是 intpl,*p2,p3;B.int*p2, p1 , *p3;C. int p1, *p2=&p1 , *p3; D. int*p2, p1, *p3=&p1;【結果分析】指針定義的具體格式如下所示:類型 *指針名1, *指針名2,;(2)若有定義 “double xx= *pp二&xx; ”,則*pp 等價于(D)。
12、A. &xxB. *xxC.D. xx【結果分析】pp指向xx所在的內存單元,這樣*pp和xx等價。(3)下面對引用的描述中(C)是錯誤的。A. 引用是某個變量或對象的別名B. 建立引用時,要對它初始化C. 對引用初始化可以使用任意類型的變量D. 引用與其代表的對象具有相同的地址【結果分析】所謂引用就是給對象取一個別名,使用該別名可以存取該對象,所以對引 用初始化必須使用同類型的變量。(4)函數(shù)沒有返回值的時候,應該選擇(A)的函數(shù)類型。A. void B. intC不確定 D. float(5)在函數(shù)的定義格式中,下面各組成部分中,(D)是可以省略的A. 函數(shù)名B.函數(shù)體C返回值類型D.函數(shù)
13、參數(shù)【結果分析】函數(shù)的定義可以缺省形式參數(shù),此時稱為無參函數(shù)。( 6)對重載的函數(shù)來說,下面敘述不正確的是( D)。A.參數(shù)的類型不同B. 參數(shù)的順序不同C. 參數(shù)的個數(shù)不同D. 參數(shù)的個數(shù)、類型、順序都相同,但函數(shù)的返回值類型不同【結果分析】對重載的函數(shù)來說,編譯系統(tǒng)將根據(jù)函數(shù)參數(shù)的類型和個數(shù)來判斷使用哪 一個函數(shù),所以重載函數(shù)參數(shù)的個數(shù)、類型、順序不能都相同。(7)下列有關設置函數(shù)參數(shù)默認值的描述中,(D)是正確的。A. 對設置函數(shù)參數(shù)默認值的順序沒有任何規(guī)定B. 函數(shù)具有一個參數(shù)時不能設置默認值C. 默認參數(shù)要設置在函數(shù)的原型中,而不能設置在函數(shù)的定義語句中D.設置默認參數(shù)可使用表達式,
14、但表達式中不可用局部變量【結果分析】在C+中,在函數(shù)原型中可以為一個或多個參數(shù)指定默認值。對函數(shù)參數(shù)設 置默認值要注意以下幾點。若沒有聲明函數(shù)原型,參數(shù)的默認值可在函數(shù)定義的頭部進行設置,否 則必須在函數(shù)原型中進行設置。在一個指定了默認值的參數(shù)右邊不能出現(xiàn)沒有指定默認值的參數(shù)。設置默認參數(shù)可使用表達式,但表達式中不可用局部變量。( 8)下面說法正確的是( C)。A. 所有的函數(shù)都可以說明為xx函數(shù)B. 具有循環(huán)語句、switch語句的函數(shù)不能說明為內聯(lián)函數(shù)C使用內聯(lián)函數(shù),可以加快程序執(zhí)行的速度,但會增加程序代碼的大小D.使用內聯(lián)函數(shù),可以減小程序代碼大小,但使程序執(zhí)行的速度減慢【結果分析】內聯(lián)
15、函數(shù)主要是解決程序的運行效率問題。在程序編譯時,編譯系統(tǒng)將程 序中出現(xiàn)內聯(lián)函數(shù)調用的地方用函數(shù)體進行替換,進而減少了程序運行的時 間,但會增加程序代碼的大小。它是以空間換取時間,因此內聯(lián)函數(shù)適用于功 能不太復雜,但要求被頻繁調用的函數(shù)。(9)一個函數(shù)功能不太復雜,但要求被頻繁調用,應選用( A)。A. 內聯(lián)函數(shù)B.重載函數(shù)C遞歸函數(shù)D.嵌套函數(shù)(10)C+寸C語言做了很多 改進,下列描述中使得C語言發(fā)生了質變,即從面向過程變成面向對象的是 (D)。A. 增加了一些新的運算符B. 允許函數(shù)重載,并允許設置默認參數(shù)C. 規(guī)定函數(shù)說明必須用原型D. 引進了類和對象的概念【結果分析】面向對象 =對象+
16、類+繼承+消息+多態(tài)四、判斷題(1)C+g序中,不得使用沒有定義或說明的變量。( V)(2)使用const說明常量時,可以不必指出類型。(X)【結果分析】如果用const定義的是一個整型常量,則類型說明符 int可以省略。(3) 引用被創(chuàng)建時可以用任意變量進行初始化。( X )【結果分析】對引用初始化必須使用同類型的變量。( 4)一個返回引用的調用函數(shù)可以 作為左值。(V)(5) 函數(shù)可以沒有參數(shù),也可以沒有返回值。( V )(6) 沒有參數(shù)的兩個函數(shù)是不能重載的。( V )(7) 函數(shù)可設置默認參數(shù),但不允許將一個函數(shù)的所有參數(shù)都設置為默認 參數(shù)。(X)【結果分析】函數(shù)可設置默認參數(shù),且允許
17、將一個函數(shù)的所有參數(shù)都設置為默認參數(shù)。(8) 運算符new分配的空間由運算符delete釋放。(V )五、簡答題(1) 名字空間的用途是什么【問題解答】名字空間用來防止命名的沖突。(2) 引用有何用處【問題解答】除了獨立引用外,在C+程序中,引用的主要用途是用作函數(shù)參數(shù)和函數(shù)的 返回值。(3) 比較值調用和引用調用的相同點與不同點?!締栴}解答】在值調用機制中,作為實參的表達式的值被復制到由對應的形參名所標識 的一個對象中,作為形參的初始值。函數(shù)體對形參的訪問、修改都是在這個標 識對象上操作的,與實參無關,即數(shù)據(jù)的傳遞是單向的。使用引用作函數(shù)的形參時,調用函數(shù)的實參要用變量名。實參傳遞給形 參,
18、相當于在被調用函數(shù)中使用了實參的別名。于是,在被調用函數(shù)中對形參 的操作實質是對實參的直接操作,即數(shù)據(jù)的傳遞是雙向的。(4)xx 函數(shù)有什么作用它有哪些特點【問題解答】內聯(lián)函數(shù)是使用 inline 關鍵字聲明的函數(shù)。在程序編譯時,編譯系統(tǒng)將程序 中出現(xiàn)內聯(lián)函數(shù)調用的地方用函數(shù)體進行替換,進而減少了程序運行的時間。使用 xx 函數(shù)應注意以下幾點。遞歸函數(shù)不能定義為XX函數(shù)。內聯(lián)函數(shù)一般適合于不含有switch和while等復雜的結構且只有15條語句的小函數(shù),否則編譯系統(tǒng)將該函數(shù)視為普通函數(shù)。 內聯(lián)函數(shù)只能先定義后使用,否則編譯系統(tǒng)也將該函數(shù)視為普通函數(shù)。對xx函數(shù)也不能進行異常接口聲明。(5)函
19、數(shù)原型中的參數(shù)名與函數(shù)定義中的參數(shù)名以及函數(shù)調用中的參數(shù)名 必須一致嗎【問題解答】不必一致。所有的參數(shù)是根據(jù)位置和類型而不是名字來區(qū)分的。(6)重載函數(shù)時通過什么來區(qū)分【問題解答】編譯系統(tǒng)將根據(jù)函數(shù)參數(shù)的類型和個數(shù)來判斷使用哪一個函數(shù)。六、程序分析題(寫出程序的輸出結果,并分析結果)#includeusing namespace std;int main ()int num=50;int& ref=num;ref=ref+10;coutnum=numendl;num=num+40;coutref=ref( 6)關于成員函數(shù)的說法中不正確的是( C)。A. 成員函數(shù)可以無返回值B. 成員函數(shù)可以
20、重載C. 成員函數(shù)一定是xx函數(shù)D. 成員函數(shù)可以設定參數(shù)的默認值【結果分析】與普通函數(shù)不同的是,成員函數(shù)是屬于某個類的。成員函數(shù)的實現(xiàn),可以放在類體內,也可以放在類體外。在類體外實現(xiàn)的成員函數(shù)不再是內聯(lián)函數(shù)。(7)下面對構造函數(shù)的不正確描述是( B)。A. 系統(tǒng)可以提供默認的構造函數(shù)B. 構造函數(shù)可以有參數(shù),所以也可以有返回值C. 構造函數(shù)可以重載D. 構造函數(shù)可以設置默認參數(shù)【結果分析】構造函數(shù)不能指定返回類型,即使是 void 類型也不可以,當然不可能有返 回值。(8)假定A是一個類,那么執(zhí)行語句“A,b(3),*p ; ”調用了( B)次構造函數(shù)。A. 1B. 2C. 3D. 4【結果
21、分析】聲明指針是不會調用構造函數(shù)的。( 9)下面對析構函數(shù)的正確描述是( AC)。A. 系統(tǒng)可以提供默認的析構函數(shù)B. 析構函數(shù)必須由用戶定義C. 析構函數(shù)沒有參數(shù)D. 析構函數(shù)可以設置默認參數(shù)【結果分析】析構函數(shù)的作用是在對象消失時執(zhí)行一項清理任務。如果一個類中沒有定 義析構函數(shù),系統(tǒng)將自動生成一個默認析構函數(shù)。析構函數(shù)沒有參數(shù),當然不 可能設置默認參數(shù)。(10)類的析構函數(shù)是(D)時被調用的。A. 類創(chuàng)建B創(chuàng)建對象C.引用對象D.釋放對象(11)創(chuàng)建一個類的對象時,系統(tǒng)自動調用(B);撤銷對象時,系統(tǒng)自動 調用( C)。A.成員函數(shù)B.構造函數(shù)C析構函數(shù)D.復制構造函數(shù)( 12)通??截悩?/p>
22、造函數(shù)的參數(shù)是( C)。A.某個對象名B.某個對象的成員名C.某個對象的引用名D.某個對象的指針名( 13)關于 this 指針的說法正確的是( B)。A. this指針必須顯式說明B.當創(chuàng)建一個對象后,this指針就指向該對象C成 員函數(shù)擁有this指針D.靜態(tài)成員函數(shù)擁有this指針。【結果分析】this指針是由C+編譯器自動產(chǎn)生且較常用的一個隱含對象指針,它不能被 顯式聲明。當創(chuàng)建一個對象時,this指針就初始化指向該對象。但只有非靜態(tài)成 員函數(shù)才擁有 this 指針,并通過該指針來處理對象。(14)下列關于子對象的描述中,(B)是錯誤的A. 子對象是類的一種數(shù)據(jù)成員,它是另一個類的對象
23、B. xx對象可以是自身類的對象C. 對子對象的初始化要包含在該類的構造函數(shù)中D. 個類中能含有多個子對象作其成員【結果分析】子對象不可以是自身類的對象。(15) 對new運算符的下列描述中,(B)是錯誤的。A. 它可以動態(tài)創(chuàng)建對象和對象數(shù)組B. 用它創(chuàng)建對象數(shù)組時必須指定初始值C用它創(chuàng)建對象時要調用構造函數(shù)D. 用它創(chuàng)建的對象數(shù)組可以使用運算符 delete來一次釋放【結果分析】使用運算符 new 創(chuàng)建對象數(shù)組的格式如下:new 類型說明符 算術表達式 其中, 算術表達式 給出數(shù)組的大小,后面不能再跟構造函數(shù)參數(shù),所以 用它創(chuàng)建對象數(shù)組時不能指定初始值。(16)對delete運算符的下列描述
24、中,(D)是錯誤的。A. 用它可以釋放用new運算符創(chuàng)建的對象和對象數(shù)組B. 用它釋放一個對象時,它作用于一個 new所返回的指針C. 用它釋放一個對象數(shù)組時,它作用的指針名前須加下標運算符口D用它可一次釋放用 new 運算符創(chuàng)建的多個對象【結果分析】用 delete 一次只能釋放用 new 創(chuàng)建的 1 個對象,但可釋放一個對象數(shù)組。(17)關于靜態(tài)數(shù)據(jù)成員,下面敘述不正確的是( C)。 A .使用靜態(tài)數(shù)據(jù)成 員,實際上是為了消除全局變量B. 可以使用 對象名靜態(tài)成員”或者類名:靜態(tài)成員”來訪問靜態(tài)數(shù)據(jù)成員C. 靜態(tài)數(shù)據(jù)成員只能在靜態(tài)成員函數(shù)中引用D. 所有對象的靜態(tài)數(shù)據(jù)成員占用同一內存單元【
25、結果分析】靜態(tài)數(shù)據(jù)成員可以在靜態(tài)成員函數(shù)中引用,也可以在非靜態(tài)成員函數(shù)中引 用。(18)對靜態(tài)數(shù)據(jù)成員的不正確描述是( CD)。A. 靜態(tài)成員不屬于對象,是類的共享成員B. 靜態(tài)數(shù)據(jù)成員要在類外定義和初始化C. 調用靜態(tài)成員函數(shù)時要通過類或對象激活,所以靜態(tài)成員函數(shù)擁有this指針D.只有靜態(tài)成員函數(shù)可以操作靜態(tài)數(shù)據(jù)成員【結果分析】this 指針是一個局部量,局部于某個對象,而靜態(tài)成員函數(shù)是屬于整個類而 不是某個對象,它沒有 this 指針。靜態(tài)成員函數(shù)和非靜態(tài)成員函數(shù)均可操作靜 態(tài)數(shù)據(jù)成員。(19)下面的選項中,靜態(tài)成員函數(shù)不能直接訪問的是( D)。A.靜態(tài)數(shù)據(jù)成員B.靜態(tài)成員函數(shù)C. 類以
26、外的函數(shù)和數(shù)據(jù)D.非靜態(tài)數(shù)據(jù)成員【結果分析】由于靜態(tài)成員函數(shù)沒有 this 指針,它只能直接訪問該類的靜態(tài)數(shù)據(jù)成員、 靜態(tài)成員函數(shù)和類以外的函數(shù)和數(shù)據(jù),訪問類中的非靜態(tài)數(shù)據(jù)成員必須通過參 數(shù)傳遞方式得到對象名,然后通過對象名來訪問。( 20)在類的定義中,引入友元的原因是( A)。A.提高效率B.深化使用類的封裝性C. 提咼程序的可讀性D.提咼數(shù)據(jù)的隱蔽性【結果分析】友元的作用主要是為了提高效率和方便編程,但友元破壞了類的封裝性和 隱蔽性,使用時要權衡利弊。( 21)友元類的聲明方法是( A)。A. friend class類名;B. youyuan class類名;C. class frie
27、nd啖名;D.friends class名;(22)下面對友元的錯誤描述是(D)。A. 關鍵字friend用于聲明友元B. 一個類中的成員函數(shù)可以是另一個類的友元C友元函數(shù)訪問對象的成員不受訪問特性影響D. 友元函數(shù)通過this指針訪問對象成員【結果分析】友元函數(shù)是一個放在類中的普通函數(shù),它沒有 this 指針。(23)下面選項中,(C)不是類的成員函數(shù)。A.構造函數(shù)B.析構函數(shù)C友元函數(shù)D.拷貝構造函數(shù)三、簡答題( 1)類與對象有什么關系【問題解答】類是一種用戶自己定義的數(shù)據(jù)類型,和其他數(shù)據(jù)類型不同的是,組成這種 類型的不僅可以有數(shù)據(jù),而且可以有對數(shù)據(jù)進行操作的函數(shù)。程序員可以使用 這個新類
28、型在程序中聲明新的變量,具有類類型的變量稱為對象。創(chuàng)建對象 時,類被用做樣板,對象稱為類的實例。(2)類定義的一般形式是什么其成員有哪幾種訪問權限【問題解答】定義類一般形式為:class類名public:protected:private:;訪問權限共有3種:分別是公有(public)、保護(protected)和私有( private) 。( 3)類的實例化是指創(chuàng)建類的對象還是定義類【問題解答】指創(chuàng)建類的對象(4)什么是 this 指針它的主要作用是什么【問題解答】this指針是C+語言為成員函數(shù)提供的一個隱含對象指針,它不能被顯式聲 明。 this 指針是一個局部量,局部于某個對象。不同的
29、對象調用同一個成員函數(shù) 時,編譯器根據(jù) this 指針來確定應該引用哪一個對象的數(shù)據(jù)成員。(5)什么叫做拷貝構造函數(shù)拷貝構造函數(shù)何時被調用【問題解答】拷貝構造函數(shù)是一種特殊的構造函數(shù),它的作用是用一個已經(jīng)存在的對象 去初始化另一個對象。為了保證所引用的對象不被修改,通常把引用參數(shù)聲明 為 const 參數(shù)。在以下 3 種情況下,拷貝構造函數(shù)都會被自動調用:當用類的一個對象去初始化該類的另一個對象時;當函數(shù)的形參是類的對象,進行形參和實參結合時;當函數(shù)的返回值是類的對象,函數(shù)執(zhí)行完成返回調用者時。四、程序分析題(寫出程序的輸出結果,并分析結果)(1)#includeusing namespace
30、 std;class Testprivate:int num;public:Test() ;/ 默認構造函數(shù)Test( int n); / 帶一個參數(shù)構造函數(shù) ;Test: : Test ()coutInit defaendl;num=0;Test: Test( int n )coutInit nendl;num=n;int main ()Test x2;/ 語句 1Test y( 15) ; / 語句 2return 0;輸出結果】Init defaInit defaInit 15【問題分析】本題主要考查構造函數(shù)的調用時機和構造函數(shù)的匹配問題?!疽c提示】構造函數(shù)在創(chuàng)建對象時被自動調用,具體
31、調用哪個構造函數(shù)將由編譯系統(tǒng) 根據(jù)重載函數(shù)的匹配原則來確定。【結果分析】 程序聲明了 2個對象x和y,類中有2個構造函數(shù)。 程序首先執(zhí)行語句1,創(chuàng)建對象x,調用默認構造函數(shù)。由于對象 x是 對象數(shù)組,每個數(shù)組元素被創(chuàng)建時都要調用構造函數(shù),所以默認構造函數(shù)被調 用了 2次,輸出第1、2行結果。程序接著執(zhí)行語句2,創(chuàng)建對象y,調用帶一 個參數(shù)的構造函數(shù),輸出第 3行結果。(2)#includeusing namespace std;class Xxprivate:int num;public:Xx(int x) num=x; /構造函數(shù)Xx() coutdst numendl; /析構函數(shù) ;in
32、t main ()Xx w(5); /語句 1coutExit mainendl; /語句 2return 0;【輸出結果】Exit maindst 5【問題分析】本題主要考查析構函數(shù)的調用時機。【要點提示】析構函數(shù)在釋放對象時被自動調用?!窘Y果分析】 程序聲明了一個對象 w。程序首先執(zhí)行語句1,創(chuàng)建對象w,調用構造函數(shù),num得到初值5。 程序接著執(zhí)行語句2,輸出第1行結果。當程序結束時,釋放對象w,析構函數(shù)被調用,輸出第 2行結果。(3)將例中的 Whole 類如下修改,其他部分不變,寫出輸出結果。class Wholepublic:Whole(int i); / Whole 的有參構造函
33、數(shù)Whole () ; / Whole 的無參構造函數(shù)Whole() ;/ Whole 的析構函數(shù)private:Part p1;子對象1Part p2;子對象2Part p3;子對象3;Whole: Whole (int i) :p2 (i), pl ()coutConstructor of Wholeendl;Whole: Whole ()coutDestructor of Wholeendl;輸出結果】Default constructor of PartConstructor of Part, 3Default constructor of PartConstructor of WholeDestructor of WholeDestructor of Part ,0Destructor of Part ,3Destructor of Part ,0【問題分析】 本題主要考查子對象初始化的方法和含有子對象時構造函數(shù)和析構函數(shù)的 調用順序。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年醫(yī)療設備維修合同
- 2025年倉儲租金費用合同
- 2025年家居和解協(xié)議書
- 2025年在線音樂電臺服務合約
- 2025年企業(yè)員工靈活用工管理服務合同
- 2025年分期付款游泳館會員購買合同
- 2025年度二零二五年度獼猴桃產(chǎn)業(yè)鏈金融服務平臺合作合同4篇
- 2025版小公司租車及車輛租賃售后服務合同2篇
- 二零二五版醫(yī)院康復病區(qū)承包服務協(xié)議2篇
- 二零二五年度木地板綠色環(huán)保材料采購合同4篇
- 項目績效和獎勵計劃
- 光伏自發(fā)自用項目年用電清單和消納計算表
- 量子計算在醫(yī)學圖像處理中的潛力
- 阿里商旅整體差旅解決方案
- 浙江天臺歷史文化名城保護規(guī)劃說明書
- 邏輯思維訓練500題
- 第八講 發(fā)展全過程人民民主PPT習概論2023優(yōu)化版教學課件
- 實體瘤療效評價標準RECIST-1.1版中文
- 企業(yè)新春茶話會PPT模板
- GB/T 19185-2008交流線路帶電作業(yè)安全距離計算方法
- DIC診治新進展課件
評論
0/150
提交評論