




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
面向對象程序設計教程答案面向對象程序設計教程答案面向對象程序設計教程答案xxx公司面向對象程序設計教程答案文件編號:文件日期:修訂次數:第1.0次更改批準審核制定方案設計,管理制度面向對象程序設計教程(C++語言描述)題解與課程設計指導第1章面向對象程序設計概論一、名詞解釋抽象封裝消息【問題解答】面向對象方法中的抽象是指對具體問題(對象)進行概括,抽出一類對象的公共性質并加以描述的過程。面向對象方法中的封裝就是把抽象出來的對象的屬性和行為結合成一個獨立的單位,并盡可能隱蔽對象的內部細節。消息是面向對象程序設計用來描述對象之間通信的機制。一個消息就是一個對象要求另一個對象實施某種操作的一個請求。二、填空題(1)目前有面向過程的結構化程序設計方法和面向對象的程序設計方法兩種重要的程序設計方法。(2)結構化程序設計方法中的模塊由順序、選擇和循環3種基本結構組成。(3)在結構化程序設計方法中,程序可表示為程序=數據結構+算法;而面向對象的程序設計方法,程序可表示為程序=對象+消息。(4)結構化程序設計方法中的基本模塊是過程;而面向對象程序設計方法中的基本模塊是類。(5)面向對象程序設計方法具有抽象性、封裝性、繼承性和多態性等特點。三、選擇題(至少選一個,可以多選)(1)面向對象程序設計著重于(B)的設計。A.對象B.類C.算法D.數據(2)面向對象程序設計中,把對象的屬性和行為組織在同一個模塊內的機制叫做(C)。A.抽象B.繼承C.封裝D.多態(3)在面向對象程序設計中,類通過(D)與外界發生關系。A.對象B.類C.消息D.接口(4)面向對象程序設計中,對象與對象之間的通信機制是(C)。A.對象B.類C.消息D.接口(5)關于C++與C語言的關系的描述中,(D)是錯誤的。A.C語言是C++的一個子集B.C語言與C++是兼容的C.C++對C語言進行了一些改進D.C++和C語言都是面向對象的【結果分析】C語言是面向過程的。C++語言是一種經過改進的更為優化的C語言,是一種混合型語言,既面向過程也面向對象。(6)面向對象的程序設計將數據結構與(A)放在一起,作為一個相互依存、不可分割的整體來處理。A.算法B.信息C.數據隱藏D.數據抽象(7)下面(A)不是面向對象系統所包含的要素。A.重載B.對象C.類D.繼承【結果分析】面向對象=對象+類+繼承+消息+多態(8)下面說法正確的是(BC)。A.將數據結構和算法置于同一個函數內,即為數據封裝B.一個類通過繼承可以獲得另一個類的特性C.面向對象要求程序員集中于事物的本質特征,用抽象的觀點看待程序D.同一消息為不同的對象接受時,產生的行為是一樣的,這稱為一致性【結果分析】面向對象程序設計方法具有抽象性、封裝性、繼承性和多態性等特點。將數據結構和算法置于同一個類內,即為數據封裝。同一消息為不同的對象接受時,產生的行為可能是不一樣的,這稱為多態性。(9)下面說法正確的是(AD)。A.對象是計算機內存中的一塊區域,它可以存放代碼和數據B.對象實際是功能相對獨立的一段程序C.各個對象間的數據可以共享是對象的一大優點D.在面向對象的程序中,對象之間只能通過消息相互通信【結果分析】對象是計算機內存中的一塊區域。在對象中,不但存有數據,而且存有代碼,使得每個對象在功能上相互之間保持相對獨立。對象之間存在各種聯系,但它們之間只能通過消息進行通信。四、判斷題(1)在高級程序設計語言中,一般用類來實現對象,類是具有相同屬性和行為的一組對象的集合,它是創建對象的模板。(√)(2)C++語言只支持面向對象技術的抽象性、封裝性、繼承性等特性,而不支持多態性。(×)【結果分析】C++語言不僅支持面向對象技術的抽象性、封裝性、繼承性等特性,而且支持多態性。(3)面向對象程序設計中的消息應該包含“如何做”的信息。(×)【結果分析】消息是面向對象程序設計用來描述對象之間通信的機制。向對象“發送消息”只需告訴對象做什么,對象根據這個消息決定如何做。(4)一個消息只能產生特定的響應效果。(×)【結果分析】當一個對象發出消息時,由于接收對象的類型可能不同,所以,它們可能做出不同的反應。這樣,一個消息可以產生不同的響應效果,這種現象叫做多態。(5)類的設計和類的繼承機制實現了軟件模塊的可重用性。(√)(6)C++語言和Java語言均不是一個純正的面向對象的程序設計的語言。(×)【結果分析】Java語言是一個純正的面向對象的程序設計語言。(7)學習C++語言是學習面向對象的程序設計方法的唯一途徑。(×)【結果分析】程序設計方法是獨立于具體程序設計語言的一種技術,學習C++語言是學習面向對象程序設計方法的重要途徑之一。(8)在C++語言中,類是支持數據封裝的工具。(√)五、簡答題(1)什么是結構化程序設計方法它有哪些優點和缺點【問題解答】結構化程序設計方法著眼于系統要實現的功能,從系統的輸入輸出出發,分析系統要做哪些事情,進而考慮如何做這些事情,自頂向下地對系統的功能進行分解,來建立系統的功能結構和相應的程序模塊結構,有效地將一個較復雜的程序系統設計任務分解成許多易于控制和處理的子任務,便于開發和維護。隨著程序規模與復雜性的增長,這種面向過程的結構化程序設計方法存在明顯的不足之處。首先是數據安全性問題。由于數據被每個模塊所共用,因此是不安全的,一旦出錯,很難查明原因。其次是可維護性及可重用性差。它把數據結構和算法分離為相互獨立的實體,一旦數據結構需要改變時,常常要涉及整個程序,修改工作量極大并容易產生新的錯誤。每一種相對于老問題的新方法都要帶來額外的開銷。另外,圖形用戶界面的應用程序,很難用過程來描述和實現,開發和維護也都很困難。(2)什么是面向對象程序設計方法它有哪些優點【問題解答】面向對象的程序設計方法中,將程序設計為一組相互協作的對象而不是一組相互協作的函數。在程序中,屬性用數據表示,用來描述對象靜態特征;行為用程序代碼實現,用來描述對象動態特征。可見,在面向對象的程序設計方法中,對象是數據結構和算法的封裝體。對象之間存在各種聯系,它們之間通過消息進行通信。程序可表示為:程序=對象+消息在面向對象程序設計中應著重于類的設計。類正是面向對象語言的基本程序模塊,通過類的設計來完成實體的建模任務。類通過一個簡單的外部接口與外界發生關系。一個類中的操作不會處理到另一個類中的數據,這樣程序模塊的獨立性、數據的安全性就有了良好的保障。程序的執行取決于事件發生的順序,由順序產生的消息來驅動程序的執行。不必預先確定消息產生的順序,更符合客觀世界的實際。并且面向對象程序設計方法提供了軟件重用、解決大問題和復雜問題的有效途徑,具有抽象性、封裝性、繼承性和多態性等特點。(3)結構化程序設計方法與面向對象程序設計方法在對待數據結構和算法關系上有什么不同【問題解答】結構化程序設計方法中,把數據結構和算法分離為相互獨立的實體;而在面向對象程序設計中,數據結構和算法封裝在一起,結合成一個獨立的單位,即對象,并盡可能隱蔽對象的內部細節。對象的私有屬性只能由這個對象的行為來讀取和修改,與外部的聯系通過公有行為充當外部接口。第2章從C到C++面向對象程序設計教程(C++語言描述)題解與課程設計指導第2章從C到C++一、名詞解釋引用內聯函數重載函數【問題解答】所謂引用就是給對象取一個別名,使用該別名可以存取該對象。換句話說是使新對象和原對象共用一個地址。內聯函數是使用inline關鍵字聲明的函數。重載函數指在同一個作用域內名字相同而參數不同的函數。重載函數通常用來對具有相似行為而數據類型或數據個數不同的操作提供—個通用的名稱。二、填空題(1)一般情況下,用C++語言編寫的程序是由函數加上類組成的。(2)C++有兩種注釋符號,一種是intp1,*p2,p3;B.int*p2,p1,*p3;C.intp1,*p2=&p1,*p3;D.int*p2,p1,*p3=&p1;【結果分析】指針定義的具體格式如下所示:<類型>*<指針名1>,*<指針名2>,…;(2)若有定義“doublexx=,*pp=&xx;”,則*pp等價于(C)。A.&xxB.*xxC..xx【結果分析】pp指向xx所在的內存單元,這樣*pp和xx等價。(3)下面對引用的描述中(C)是錯誤的。A.引用是某個變量或對象的別名B.建立引用時,要對它初始化C.對引用初始化可以使用任意類型的變量D.引用與其代表的對象具有相同的地址【結果分析】所謂引用就是給對象取一個別名,使用該別名可以存取該對象,所以對引用初始化必須使用同類型的變量。(4)函數沒有返回值的時候,應該選擇(A)的函數類型。A.voidB.intC.不確定D.float(5)在函數的定義格式中,下面各組成部分中,(D)是可以省略的。A.函數名B.函數體C.返回值類型D.函數參數【結果分析】函數的定義可以缺省形式參數,此時稱為無參函數。(6)對重載的函數來說,下面敘述不正確的是(D)。A.參數的類型不同B.參數的順序不同C.參數的個數不同D.參數的個數、類型、順序都相同,但函數的返回值類型不同【結果分析】對重載的函數來說,編譯系統將根據函數參數的類型和個數來判斷使用哪一個函數,所以重載函數參數的個數、類型、順序不能都相同。(7)下列有關設置函數參數默認值的描述中,(D)是正確的。A.對設置函數參數默認值的順序沒有任何規定B.函數具有一個參數時不能設置默認值C.默認參數要設置在函數的原型中,而不能設置在函數的定義語句中D.設置默認參數可使用表達式,但表達式中不可用局部變量【結果分析】在C++中,在函數原型中可以為一個或多個參數指定默認值。對函數參數設置默認值要注意以下幾點。◆若沒有聲明函數原型,參數的默認值可在函數定義的頭部進行設置,否則必須在函數原型中進行設置。◆在一個指定了默認值的參數右邊不能出現沒有指定默認值的參數。◆設置默認參數可使用表達式,但表達式中不可用局部變量。(8)下面說法正確的是(BC)。A.所有的函數都可以說明為內聯函數B.具有循環語句、switch語句的函數不能說明為內聯函數C.使用內聯函數,可以加快程序執行的速度,但會增加程序代碼的大小D.使用內聯函數,可以減小程序代碼大小,但使程序執行的速度減慢【結果分析】內聯函數主要是解決程序的運行效率問題。在程序編譯時,編譯系統將程序中出現內聯函數調用的地方用函數體進行替換,進而減少了程序運行的時間,但會增加程序代碼的大小。它是以空間換取時間,因此內聯函數適用于功能不太復雜,但要求被頻繁調用的函數。(9)一個函數功能不太復雜,但要求被頻繁調用,應選用(A)。A.內聯函數B.重載函數C.遞歸函數D.嵌套函數(10)C++對C語言做了很多改進,下列描述中使得C語言發生了質變,即從面向過程變成面向對象的是(D)。A.增加了一些新的運算符B.允許函數重載,并允許設置默認參數C.規定函數說明必須用原型D.引進了類和對象的概念【結果分析】面向對象=對象+類+繼承+消息+多態四、判斷題(1)C++程序中,不得使用沒有定義或說明的變量。(√)(2)使用const說明常量時,可以不必指出類型。(×)【結果分析】如果用const定義的是一個整型常量,則類型說明符int可以省略。(3)引用被創建時可以用任意變量進行初始化。(×)【結果分析】對引用初始化必須使用同類型的變量。(4)一個返回引用的調用函數可以作為左值。(√)(5)函數可以沒有參數,也可以沒有返回值。(√)(6)沒有參數的兩個函數是不能重載的。(√)(7)函數可設置默認參數,但不允許將一個函數的所有參數都設置為默認參數。(×)【結果分析】函數可設置默認參數,且允許將一個函數的所有參數都設置為默認參數。(8)運算符new分配的空間由運算符delete釋放。(√)五、簡答題(1)名字空間的用途是什么【問題解答】名字空間用來防止命名的沖突。(2)引用有何用處【問題解答】除了獨立引用外,在C++程序中,引用的主要用途是用作函數參數和函數的返回值。(3)比較值調用和引用調用的相同點與不同點。【問題解答】在值調用機制中,作為實參的表達式的值被復制到由對應的形參名所標識的一個對象中,作為形參的初始值。函數體對形參的訪問、修改都是在這個標識對象上操作的,與實參無關,即數據的傳遞是單向的。使用引用作函數的形參時,調用函數的實參要用變量名。實參傳遞給形參,相當于在被調用函數中使用了實參的別名。于是,在被調用函數中對形參的操作實質是對實參的直接操作,即數據的傳遞是雙向的。(4)內聯函數有什么作用它有哪些特點【問題解答】內聯函數是使用inline關鍵字聲明的函數。在程序編譯時,編譯系統將程序中出現內聯函數調用的地方用函數體進行替換,進而減少了程序運行的時間。使用內聯函數應注意以下幾點。◆遞歸函數不能定義為內聯函數。◆內聯函數一般適合于不含有switch和while等復雜的結構且只有1~5條語句的小函數,否則編譯系統將該函數視為普通函數。◆內聯函數只能先定義后使用,否則編譯系統也將該函數視為普通函數。◆對內聯函數也不能進行異常接口聲明。(5)函數原型中的參數名與函數定義中的參數名以及函數調用中的參數名必須一致嗎【問題解答】不必一致。所有的參數是根據位置和類型而不是名字來區分的。(6)重載函數時通過什么來區分【問題解答】編譯系統將根據函數參數的類型和個數來判斷使用哪一個函數。六、程序分析題(寫出程序的輸出結果,并分析結果)#include<iostream>usingnamespacestd;intmain(){intnum=50;int&ref=num;ref=ref+10;cout<<"num="<<num<<endl;num=num+40;cout<<"ref="<<ref<<endl;return0;}【輸出結果】num=60ref=100【問題分析】本題主要考查引用的含義。【結果分析】程序首先定義一個int類型的對象num,并給它賦初始值50。然后又定義了一個int類型的引用ref,并將它和num相聯系。這樣,無論是對num還是對ref進行操作,實際上都是對那個一開始放著50的物理單元的內容進行操作。七、程序設計題寫出一個完整的C++程序,使用系統函數pow(x,y)計算xy的值,注意包含頭文件cmath。【問題分析】本題主要考查簡單的輸入輸出和標準庫函數的調用方法。【解題思路】①由于要用到系統函數pow(x,y),所以要包含頭文件cmath。②要計算xy的值,首先必須知道x和y的值。為了程序的通用性,最好通過交互的方式輸入x和y的值。【參考程序】publicB.staticC.protectedD.private【結果分析】類的訪問權限有public、protected和private。(2)有關類的說法不正確的是(BC)。A.類是一種用戶自定義的數據類型B.只有類的成員函數才能訪問類的私有數據成員C.在類中,如不做權限說明,所有的數據成員都是公有的D.在類中,如不做權限說明,所有的數據成員都是私有的【結果分析】類是一種用戶自定義的數據類型,類中成員均具有一種訪問權限。關鍵字public、protected和private以后的成員的訪問權限分別是公有、保護和私有的,所有成員默認定義為private的。私有成員是被隱藏的數據,只有該類的成員函數或友元函數才可以訪問它。(3)在類定義的外部,可以被任意函數訪問的成員有(C)。A.所有類成員B.private或protected的類成員C.public的類成員D.public或private的類成員【結果分析】類是一種用戶自定義的數據類型,類中成員均具有一種訪問權限。公有成員定義了類的外部接口。私有成員是被隱藏的數據,只有該類的成員函數或友元函數才可以引用它。保護成員具有公有成員和私有成員的雙重性質,可以被該類或派生類的成員函數或友元函數引用。可見在類定義的外部,可以被任意函數訪問的成員是public的類成員。(4)關于類和對象的說法(C)是錯誤的。A.對象是類的一個實例B.任何一個對象只能屬于一個具體的類C.一個類只能有一個對象D.類與對象的關系和數據類型與變量的關系相似【結果分析】C++語言的類就是一種用戶自己定義的數據類型,類和對象的關系就相當于基本數據類型與它的變量的關系,所以任何一個對象只能屬于一個具體的類,但一個類可以有多個對象。(5)設MClass是一個類,dd是它的一個對象,pp是指向dd的指針,cc是dd的引用,則對成員的訪問,對象dd可以通過(B)進行,指針pp可以通過(D)進行,引用cc可以通過(B)進行。A.∷B..C.&D.->(6)關于成員函數的說法中不正確的是(C)。A.成員函數可以無返回值B.成員函數可以重載C.成員函數一定是內聯函數D.成員函數可以設定參數的默認值【結果分析】與普通函數不同的是,成員函數是屬于某個類的。成員函數的實現,可以放在類體內,也可以放在類體外。在類體外實現的成員函數不再是內聯函數。(7)下面對構造函數的不正確描述是(B)。A.系統可以提供默認的構造函數B.構造函數可以有參數,所以也可以有返回值C.構造函數可以重載D.構造函數可以設置默認參數【結果分析】構造函數不能指定返回類型,即使是void類型也不可以,當然不可能有返回值。(8)假定A是一個類,那么執行語句“Aa,b(3),*p;”調用了(B)次構造函數。A.1B.2C.3D.4【結果分析】聲明指針是不會調用構造函數的。(9)下面對析構函數的正確描述是(AC)。A.系統可以提供默認的析構函數B.析構函數必須由用戶定義C.析構函數沒有參數D.析構函數可以設置默認參數【結果分析】析構函數的作用是在對象消失時執行一項清理任務。如果一個類中沒有定義析構函數,系統將自動生成一個默認析構函數。析構函數沒有參數,當然不可能設置默認參數。(10)類的析構函數是(D)時被調用的。A.類創建B.創建對象C.引用對象D.釋放對象(11)創建一個類的對象時,系統自動調用(B);撤銷對象時,系統自動調用(C)。A.成員函數B.構造函數C.析構函數D.復制構造函數(12)通常拷貝構造函數的參數是(C)。A.某個對象名B.某個對象的成員名C.某個對象的引用名D.某個對象的指針名(13)關于this指針的說法正確的是(B)。A.this指針必須顯式說明B.當創建一個對象后,this指針就指向該對象C.成員函數擁有this指針D.靜態成員函數擁有this指針。【結果分析】this指針是由C++編譯器自動產生且較常用的一個隱含對象指針,它不能被顯式聲明。當創建一個對象時,this指針就初始化指向該對象。但只有非靜態成員函數才擁有this指針,并通過該指針來處理對象。(14)下列關于子對象的描述中,(B)是錯誤的。A.子對象是類的一種數據成員,它是另一個類的對象B.子對象可以是自身類的對象C.對子對象的初始化要包含在該類的構造函數中D.一個類中能含有多個子對象作其成員【結果分析】子對象不可以是自身類的對象。(15)對new運算符的下列描述中,(B)是錯誤的。A.它可以動態創建對象和對象數組B.用它創建對象數組時必須指定初始值C.用它創建對象時要調用構造函數D.用它創建的對象數組可以使用運算符delete來一次釋放【結果分析】使用運算符new創建對象數組的格式如下:new<類型說明符>[<算術表達式>]其中,<算術表達式>給出數組的大小,后面不能再跟構造函數參數,所以用它創建對象數組時不能指定初始值。(16)對delete運算符的下列描述中,(D)是錯誤的。A.用它可以釋放用new運算符創建的對象和對象數組B.用它釋放一個對象時,它作用于一個new所返回的指針C.用它釋放一個對象數組時,它作用的指針名前須加下標運算符[]D.用它可一次釋放用new運算符創建的多個對象【結果分析】用delete一次只能釋放用new創建的1個對象,但可釋放一個對象數組。(17)關于靜態數據成員,下面敘述不正確的是(C)。A.使用靜態數據成員,實際上是為了消除全局變量B.可以使用“對象名.靜態成員”或者“類名∷靜態成員”來訪問靜態數據成員C.靜態數據成員只能在靜態成員函數中引用D.所有對象的靜態數據成員占用同一內存單元【結果分析】靜態數據成員可以在靜態成員函數中引用,也可以在非靜態成員函數中引用。(18)對靜態數據成員的不正確描述是(CD)。A.靜態成員不屬于對象,是類的共享成員B.靜態數據成員要在類外定義和初始化C.調用靜態成員函數時要通過類或對象激活,所以靜態成員函數擁有this指針D.只有靜態成員函數可以操作靜態數據成員【結果分析】this指針是一個局部量,局部于某個對象,而靜態成員函數是屬于整個類而不是某個對象,它沒有this指針。靜態成員函數和非靜態成員函數均可操作靜態數據成員。(19)下面的選項中,靜態成員函數不能直接訪問的是(D)。A.靜態數據成員B.靜態成員函數C.類以外的函數和數據D.非靜態數據成員【結果分析】由于靜態成員函數沒有this指針,它只能直接訪問該類的靜態數據成員、靜態成員函數和類以外的函數和數據,訪問類中的非靜態數據成員必須通過參數傳遞方式得到對象名,然后通過對象名來訪問。(20)在類的定義中,引入友元的原因是(A)。A.提高效率B.深化使用類的封裝性C.提高程序的可讀性D.提高數據的隱蔽性【結果分析】友元的作用主要是為了提高效率和方便編程,但友元破壞了類的封裝性和隱蔽性,使用時要權衡利弊。(21)友元類的聲明方法是(A)。A.friendclass<類名>;B.youyuanclass<類名>;C.classfriend<類名>;D.friendsclass<類名>;(22)下面對友元的錯誤描述是(D)。A.關鍵字friend用于聲明友元B.一個類中的成員函數可以是另一個類的友元C.友元函數訪問對象的成員不受訪問特性影響D.友元函數通過this指針訪問對象成員【結果分析】友元函數是一個放在類中的普通函數,它沒有this指針。(23)下面選項中,(C)不是類的成員函數。A.構造函數B.析構函數C.友元函數D.拷貝構造函數三、簡答題(1)類與對象有什么關系【問題解答】類是一種用戶自己定義的數據類型,和其他數據類型不同的是,組成這種類型的不僅可以有數據,而且可以有對數據進行操作的函數。程序員可以使用這個新類型在程序中聲明新的變量,具有類類型的變量稱為對象。創建對象時,類被用做樣板,對象稱為類的實例。(2)類定義的一般形式是什么其成員有哪幾種訪問權限【問題解答】定義類一般形式為:class類名{public:<公有數據和函數>protected:<保護數據和函數>private:<私有數據和函數>};訪問權限共有3種:分別是公有(public)、保護(protected)和私有(private)。(3)類的實例化是指創建類的對象還是定義類【問題解答】指創建類的對象。(4)什么是this指針它的主要作用是什么【問題解答】this指針是C++語言為成員函數提供的一個隱含對象指針,它不能被顯式聲明。this指針是一個局部量,局部于某個對象。不同的對象調用同一個成員函數時,編譯器根據this指針來確定應該引用哪一個對象的數據成員。(5)什么叫做拷貝構造函數拷貝構造函數何時被調用【問題解答】拷貝構造函數是一種特殊的構造函數,它的作用是用一個已經存在的對象去初始化另一個對象。為了保證所引用的對象不被修改,通常把引用參數聲明為const參數。在以下3種情況下,拷貝構造函數都會被自動調用:◆當用類的一個對象去初始化該類的另一個對象時;◆當函數的形參是類的對象,進行形參和實參結合時;◆當函數的返回值是類的對象,函數執行完成返回調用者時。四、程序分析題(寫出程序的輸出結果,并分析結果)(1)#include<iostream>usingnamespacestd;classTest{private:intnum;public:Test();//默認構造函數Test(intn);//帶一個參數構造函數};Test∷Test(){cout<<"Initdefa"<<endl;num=0;}Test∷Test(intn){cout<<"Init"<<""<<n<<endl;num=n;}intmain(){Testx[2];//語句1Testy(15);//語句2return0;}【輸出結果】InitdefaInitdefaInit15【問題分析】本題主要考查構造函數的調用時機和構造函數的匹配問題。【要點提示】構造函數在創建對象時被自動調用,具體調用哪個構造函數將由編譯系統根據重載函數的匹配原則來確定。【結果分析】①程序聲明了2個對象x和y,類中有2個構造函數。②程序首先執行語句1,創建對象x,調用默認構造函數。由于對象x是對象數組,每個數組元素被創建時都要調用構造函數,所以默認構造函數被調用了2次,輸出第1、2行結果。程序接著執行語句2,創建對象y,調用帶一個參數的構造函數,輸出第3行結果。(2)#include<iostream>usingnamespacestd;classXx{private:intnum;public:Xx(intx){num=x;}//構造函數~Xx(){cout<<"dst"<<num<<endl;}//析構函數};intmain(){Xxw(5);//語句1cout<<"Exitmain"<<endl;//語句2return0;}【輸出結果】Exitmaindst5【問題分析】本題主要考查析構函數的調用時機。【要點提示】析構函數在釋放對象時被自動調用。【結果分析】①程序聲明了一個對象w。②程序首先執行語句1,創建對象w,調用構造函數,num得到初值5。程序接著執行語句2,輸出第1行結果。當程序結束時,釋放對象w,析構函數被調用,輸出第2行結果。(3)將例中的Whole類如下修改,其他部分不變,寫出輸出結果。classWhole{public:Whole(inti);//Whole的有參構造函數Whole(){};//Whole的無參構造函數~Whole();//Whole的析構函數private:Partp1;//子對象1Partp2;//子對象2Partp3;//子對象3};Whole∷Whole(inti):p2(i),p1(){cout<<"ConstructorofWhole"<<endl;}Whole∷~Whole(){cout<<"DestructorofWhole"
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 忻州市靜樂縣2024-2025學年四年級數學第二學期期末質量檢測試題含解析
- IT員工合同保密條款2025年
- 望江縣2025年三年級數學第二學期期末檢測試題含解析
- 個人動產抵押反擔保借款合同
- 南陽市鎮平縣2025屆四下數學期末經典模擬試題含解析
- 吉林省長春市第二實驗校2025屆初三第一次月考語文試題文試題含解析
- 石渠縣2025年四年級數學第二學期期末質量檢測試題含解析
- 企業人力資源顧問合同
- 洗滌劑產品購銷合同
- 統編版二年級語文下冊期末測試卷(C)(含答案)
- 社區工作職業道德培訓
- 手機支架供貨合同模板
- 2024年高考化學真題完全解讀(全國甲卷)
- 2024能源互聯網智慧電力云服務平臺建設規范及標準
- 靜電噴涂培訓
- 各專業文件準備目錄-急診內科藥物臨床試驗機構GCP SOP
- 心肺復蘇術課件2024新版
- 湖北開放大學2024年《漢語基礎#》形考作業1-4試題
- 四年級下冊道德與法治(教學設計+素材)第8課《這些東西哪里來》(第二課時)
- 高職旅游專業《旅行社經營管理》說課稿
- DB65-T 4785-2024 耕地質量等級調查評價技術規范
評論
0/150
提交評論