版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、面向?qū)ο蟪绦蛟O(shè)計(jì)教程(C+語言描述)題解與課程設(shè)計(jì)指導(dǎo)第1章面向?qū)ο蟪绦蛟O(shè)計(jì)概論一、 名詞解釋抽象封裝消息【問題解答】面向?qū)ο蠓椒ㄖ械某橄笫侵笇唧w問題(對象)進(jìn)行概括,抽出一類對象的公共性質(zhì)并加以描述的過程。面向?qū)ο蠓椒ㄖ械姆庋b就是把抽象出來的對象的屬性和行為結(jié)合成一個(gè)獨(dú)立的單位,并盡可能隱蔽對象的內(nèi)部細(xì)節(jié)。消息是面向?qū)ο蟪绦蛟O(shè)計(jì)用來描述對象之間通信的機(jī)制。一個(gè)消息就是一個(gè)對象要求另一個(gè)對象實(shí)施某種操作的一個(gè)請求。二、 填空題(1) 目前有面向過程的結(jié)構(gòu)化程序設(shè)計(jì)方法和面向?qū)ο蟮某绦蛟O(shè)計(jì)方法兩種重要的程序設(shè)計(jì)方法。(2) 結(jié)構(gòu)化程序設(shè)計(jì)方法中的模塊由順序、選擇和循環(huán)3種基本結(jié)構(gòu)組成。(3)
2、在結(jié)構(gòu)化程序設(shè)計(jì)方法中,程序可表示為程序=數(shù)據(jù)結(jié)構(gòu)+算法; 而面向?qū)ο蟮某绦蛟O(shè)計(jì)方法,程序可表示為程序=對象+消息。(4) 結(jié)構(gòu)化程序設(shè)計(jì)方法中的基本模塊是過程; 而面向?qū)ο蟪绦蛟O(shè)計(jì)方法中的基本模塊是類。(5) 面向?qū)ο蟪绦蛟O(shè)計(jì)方法具有抽象性、封裝性、繼承性和多態(tài)性等特點(diǎn)。三、 選擇題(至少選一個(gè),可以多選)(1) 面向?qū)ο蟪绦蛟O(shè)計(jì)著重于( B )的設(shè)計(jì)。A. 對象B. 類C. 算法D. 數(shù)據(jù) (2) 面向?qū)ο蟪绦蛟O(shè)計(jì)中,把對象的屬性和行為組織在同一個(gè)模塊內(nèi)的機(jī)制叫做( C )。A. 抽象 B. 繼承 C. 封裝 D. 多態(tài)(3) 在面向?qū)ο蟪绦蛟O(shè)計(jì)中,類通過( D )與外界發(fā)生關(guān)系。A. 對
3、象 B. 類 C. 消息 D. 接口(4) 面向?qū)ο蟪绦蛟O(shè)計(jì)中,對象與對象之間的通信機(jī)制是( C )。A. 對象 B. 類 C. 消息 D. 接口(5) 關(guān)于C+與C語言的關(guān)系的描述中,( D )是錯(cuò)誤的。A. C語言是C+的一個(gè)子集 B. C語言與C+是兼容的C. C+對C語言進(jìn)行了一些改進(jìn) D. C+和C語言都是面向?qū)ο蟮摹窘Y(jié)果分析】C語言是面向過程的。C+語言是一種經(jīng)過改進(jìn)的更為優(yōu)化的C語言,是一種混合型語言,既面向過程也面向?qū)ο?。?) 面向?qū)ο蟮某绦蛟O(shè)計(jì)將數(shù)據(jù)結(jié)構(gòu)與( A )放在一起,作為一個(gè)相互依存、不可分割的整體來處理。1 / 22A. 算法 B. 信息 C. 數(shù)據(jù)隱藏 D. 數(shù)
4、據(jù)抽象(7) 下面( A )不是面向?qū)ο笙到y(tǒng)所包含的要素。A. 重載 B. 對象 C. 類 D. 繼承【結(jié)果分析】面向?qū)ο?對象+類+繼承+消息+多態(tài)(8) 下面說法正確的是( BC )。A. 將數(shù)據(jù)結(jié)構(gòu)和算法置于同一個(gè)函數(shù)內(nèi),即為數(shù)據(jù)封裝 B. 一個(gè)類通過繼承可以獲得另一個(gè)類的特性C. 面向?qū)ο笠蟪绦騿T集中于事物的本質(zhì)特征,用抽象的觀點(diǎn)看待程序D. 同一消息為不同的對象接受時(shí),產(chǎn)生的行為是一樣的,這稱為一致性【結(jié)果分析】面向?qū)ο蟪绦蛟O(shè)計(jì)方法具有抽象性、封裝性、繼承性和多態(tài)性等特點(diǎn)。將數(shù)據(jù)結(jié)構(gòu)和算法置于同一個(gè)類內(nèi),即為數(shù)據(jù)封裝。同一消息為不同的對象接受時(shí),產(chǎn)生的行為可能是不一樣的,這稱為多態(tài)
5、性。(9) 下面說法正確的是( AD )。A. 對象是計(jì)算機(jī)內(nèi)存中的一塊區(qū)域,它可以存放代碼和數(shù)據(jù)B. 對象實(shí)際是功能相對獨(dú)立的一段程序C. 各個(gè)對象間的數(shù)據(jù)可以共享是對象的一大優(yōu)點(diǎn)D. 在面向?qū)ο蟮某绦蛑?,對象之間只能通過消息相互通信【結(jié)果分析】對象是計(jì)算機(jī)內(nèi)存中的一塊區(qū)域。在對象中,不但存有數(shù)據(jù),而且存有代碼,使得每個(gè)對象在功能上相互之間保持相對獨(dú)立。對象之間存在各種聯(lián)系,但它們之間只能通過消息進(jìn)行通信。四、 判斷題(1) 在高級程序設(shè)計(jì)語言中,一般用類來實(shí)現(xiàn)對象,類是具有相同屬性和行為的一組對象的集合,它是創(chuàng)建對象的模板。( ) (2) C+語言只支持面向?qū)ο蠹夹g(shù)的抽象性、封裝性、繼承性
6、等特性,而不支持多態(tài)性。( ) 【結(jié)果分析】C+語言不僅支持面向?qū)ο蠹夹g(shù)的抽象性、封裝性、繼承性等特性,而且支持多態(tài)性。(3) 面向?qū)ο蟪绦蛟O(shè)計(jì)中的消息應(yīng)該包含“如何做”的信息。( ) 【結(jié)果分析】消息是面向?qū)ο蟪绦蛟O(shè)計(jì)用來描述對象之間通信的機(jī)制。向?qū)ο蟆鞍l(fā)送消息”只需告訴對象做什么,對象根據(jù)這個(gè)消息決定如何做。(4) 一個(gè)消息只能產(chǎn)生特定的響應(yīng)效果。( ) 【結(jié)果分析】當(dāng)一個(gè)對象發(fā)出消息時(shí),由于接收對象的類型可能不同,所以,它們可能做出不同的反應(yīng)。這樣,一個(gè)消息可以產(chǎn)生不同的響應(yīng)效果,這種現(xiàn)象叫做多態(tài)。(5) 類的設(shè)計(jì)和類的繼承機(jī)制實(shí)現(xiàn)了軟件模塊的可重用性。( ) (6) C+語言和Java
7、語言均不是一個(gè)純正的面向?qū)ο蟮某绦蛟O(shè)計(jì)的語言。( ) 【結(jié)果分析】Java語言是一個(gè)純正的面向?qū)ο蟮某绦蛟O(shè)計(jì)語言。(7) 學(xué)習(xí)C+語言是學(xué)習(xí)面向?qū)ο蟮某绦蛟O(shè)計(jì)方法的唯一途徑。( )【結(jié)果分析】程序設(shè)計(jì)方法是獨(dú)立于具體程序設(shè)計(jì)語言的一種技術(shù),學(xué)習(xí)C+語言是學(xué)習(xí)面向?qū)ο蟪绦蛟O(shè)計(jì)方法的重要途徑之一。(8) 在C+語言中,類是支持?jǐn)?shù)據(jù)封裝的工具。( ) 五、 簡答題(1) 什么是結(jié)構(gòu)化程序設(shè)計(jì)方法?它有哪些優(yōu)點(diǎn)和缺點(diǎn)?【問題解答】結(jié)構(gòu)化程序設(shè)計(jì)方法著眼于系統(tǒng)要實(shí)現(xiàn)的功能,從系統(tǒng)的輸入輸出出發(fā),分析系統(tǒng)要做哪些事情,進(jìn)而考慮如何做這些事情,自頂向下地對系統(tǒng)的功能進(jìn)行分解,來建立系統(tǒng)的功能結(jié)構(gòu)和相應(yīng)的程序
8、模塊結(jié)構(gòu),有效地將一個(gè)較復(fù)雜的程序系統(tǒng)設(shè)計(jì)任務(wù)分解成許多易于控制和處理的子任務(wù),便于開發(fā)和維護(hù)。隨著程序規(guī)模與復(fù)雜性的增長,這種面向過程的結(jié)構(gòu)化程序設(shè)計(jì)方法存在明顯的不足之處。首先是數(shù)據(jù)安全性問題。由于數(shù)據(jù)被每個(gè)模塊所共用,因此是不安全的,一旦出錯(cuò),很難查明原因。其次是可維護(hù)性及可重用性差。它把數(shù)據(jù)結(jié)構(gòu)和算法分離為相互獨(dú)立的實(shí)體,一旦數(shù)據(jù)結(jié)構(gòu)需要改變時(shí),常常要涉及整個(gè)程序,修改工作量極大并容易產(chǎn)生新的錯(cuò)誤。每一種相對于老問題的新方法都要帶來額外的開銷。另外,圖形用戶界面的應(yīng)用程序,很難用過程來描述和實(shí)現(xiàn),開發(fā)和維護(hù)也都很困難。(2) 什么是面向?qū)ο蟪绦蛟O(shè)計(jì)方法?它有哪些優(yōu)點(diǎn)?【問題解答】面向?qū)?/p>
9、象的程序設(shè)計(jì)方法中,將程序設(shè)計(jì)為一組相互協(xié)作的對象而不是一組相互協(xié)作的函數(shù)。在程序中,屬性用數(shù)據(jù)表示,用來描述對象靜態(tài)特征; 行為用程序代碼實(shí)現(xiàn),用來描述對象動(dòng)態(tài)特征??梢?,在面向?qū)ο蟮某绦蛟O(shè)計(jì)方法中,對象是數(shù)據(jù)結(jié)構(gòu)和算法的封裝體。對象之間存在各種聯(lián)系,它們之間通過消息進(jìn)行通信。程序可表示為: 程序=對象+消息在面向?qū)ο蟪绦蛟O(shè)計(jì)中應(yīng)著重于類的設(shè)計(jì)。類正是面向?qū)ο笳Z言的基本程序模塊,通過類的設(shè)計(jì)來完成實(shí)體的建模任務(wù)。類通過一個(gè)簡單的外部接口與外界發(fā)生關(guān)系。一個(gè)類中的操作不會處理到另一個(gè)類中的數(shù)據(jù),這樣程序模塊的獨(dú)立性、數(shù)據(jù)的安全性就有了良好的保障。程序的執(zhí)行取決于事件發(fā)生的順序,由順序產(chǎn)生的消息
10、來驅(qū)動(dòng)程序的執(zhí)行。不必預(yù)先確定消息產(chǎn)生的順序,更符合客觀世界的實(shí)際。并且面向?qū)ο蟪绦蛟O(shè)計(jì)方法提供了軟件重用、解決大問題和復(fù)雜問題的有效途徑,具有抽象性、封裝性、繼承性和多態(tài)性等特點(diǎn)。(3) 結(jié)構(gòu)化程序設(shè)計(jì)方法與面向?qū)ο蟪绦蛟O(shè)計(jì)方法在對待數(shù)據(jù)結(jié)構(gòu)和算法關(guān)系上有 什么不同?【問題解答】結(jié)構(gòu)化程序設(shè)計(jì)方法中,把數(shù)據(jù)結(jié)構(gòu)和算法分離為相互獨(dú)立的實(shí)體; 而在面向?qū)ο蟪绦蛟O(shè)計(jì)中,數(shù)據(jù)結(jié)構(gòu)和算法封裝在一起,結(jié)合成一個(gè)獨(dú)立的單位,即對象,并盡可能隱蔽對象的內(nèi)部細(xì)節(jié)。對象的私有屬性只能由這個(gè)對象的行為來讀取和修改,與外部的聯(lián)系通過公有行為充當(dāng)外部接口。第2章從C到C+面向?qū)ο蟪绦蛟O(shè)計(jì)教程(C+語言描述)題解與課程
11、設(shè)計(jì)指導(dǎo)第2章從C到C+一、 名詞解釋引用內(nèi)聯(lián)函數(shù)重載函數(shù) 【問題解答】所謂引用就是給對象取一個(gè)別名,使用該別名可以存取該對象。換句話說是使新對象和原對象共用一個(gè)地址。內(nèi)聯(lián)函數(shù)是使用inline關(guān)鍵字聲明的函數(shù)。重載函數(shù)指在同一個(gè)作用域內(nèi)名字相同而參數(shù)不同的函數(shù)。重載函數(shù)通常用來對具有相似行為而數(shù)據(jù)類型或數(shù)據(jù)個(gè)數(shù)不同的操作提供個(gè)通用的名稱。二、 填空題(1) 一般情況下,用C+語言編寫的程序是由函數(shù)加上類組成的。(2) C+有兩種注釋符號,一種是/,另一種是 /*/。(3) 使用C+風(fēng)格的輸入輸出,在程序中必須包含頭文件“iostream”。(4) cin是預(yù)定義的標(biāo)準(zhǔn)輸入流對象,是輸入操作符
12、,也稱提取運(yùn)算符。(5) cout是預(yù)定義的標(biāo)準(zhǔn)輸出流對象,是輸出操作符,也稱插入運(yùn)算符。(6) 指針的值是它所指向那個(gè)對象的地址值。指針的類型是它所指向?qū)ο蟮念愋?。指針的?nèi)容便是它所指向?qū)ο蟮闹?。?) C+使用運(yùn)算符&來定義一個(gè)引用,對引用的存取都是對它所引用的對象的存取。(8) 當(dāng)一個(gè)函數(shù)調(diào)用出現(xiàn)在函數(shù)定義之前時(shí),必須先用函數(shù)原型對函數(shù)進(jìn)行聲明。(9) C+有值傳遞和引用傳遞兩種參數(shù)傳遞機(jī)制。(10) 使用關(guān)鍵字inline聲明的函數(shù)稱為內(nèi)聯(lián)函數(shù)。(11) 運(yùn)算符new用于進(jìn)行動(dòng)態(tài)內(nèi)存分配,運(yùn)算符delete用于釋放動(dòng)態(tài)分配的內(nèi)存。(12) 下面程序的輸出結(jié)果為x=10,y=10; x=
13、100,y=100。#includeusing namespace std;int main()int x=10,&y=x;coutx=x,y=yendl;int *p=&y;*p=100;coutx=x,y=yendl;return 0; 三、 選擇題(至少選一個(gè),可以多選)(1) 在整型指針變量p2、p3的定義中,錯(cuò)誤的是( A )。A. int p1,*p2,p3; B. int*p2,p1,*p3;C. int p1,*p2=&p1,*p3; D. int*p2,p1,*p3=&p1;【結(jié)果分析】指針定義的具體格式如下所示: *,*,; (2) 若有定義“double xx=3.14,
14、*pp=&xx; ”,則*pp等價(jià)于( C )。A. &xxB. *xxC. 3.14D. xx【結(jié)果分析】pp指向xx所在的內(nèi)存單元,這樣*pp和xx等價(jià)。(3) 下面對引用的描述中( C )是錯(cuò)誤的。A. 引用是某個(gè)變量或?qū)ο蟮膭e名B. 建立引用時(shí),要對它初始化C. 對引用初始化可以使用任意類型的變量D. 引用與其代表的對象具有相同的地址【結(jié)果分析】所謂引用就是給對象取一個(gè)別名,使用該別名可以存取該對象,所以對引用初始化必須使用同類型的變量。(4) 函數(shù)沒有返回值的時(shí)候,應(yīng)該選擇( A )的函數(shù)類型。A. void B. int C. 不確定 D. float(5) 在函數(shù)的定義格式中,下
15、面各組成部分中,( D )是可以省略的。A. 函數(shù)名 B. 函數(shù)體 C. 返回值類型 D. 函數(shù)參數(shù)【結(jié)果分析】函數(shù)的定義可以缺省形式參數(shù),此時(shí)稱為無參函數(shù)。(6) 對重載的函數(shù)來說,下面敘述不正確的是( D )。A. 參數(shù)的類型不同 B. 參數(shù)的順序不同C. 參數(shù)的個(gè)數(shù)不同 D. 參數(shù)的個(gè)數(shù)、類型、順序都相同,但函數(shù)的返回值類型不同【結(jié)果分析】對重載的函數(shù)來說,編譯系統(tǒng)將根據(jù)函數(shù)參數(shù)的類型和個(gè)數(shù)來判斷使用哪一個(gè)函數(shù),所以重載函數(shù)參數(shù)的個(gè)數(shù)、類型、順序不能都相同。(7) 下列有關(guān)設(shè)置函數(shù)參數(shù)默認(rèn)值的描述中,( D )是正確的。A. 對設(shè)置函數(shù)參數(shù)默認(rèn)值的順序沒有任何規(guī)定B. 函數(shù)具有一個(gè)參數(shù)時(shí)
16、不能設(shè)置默認(rèn)值C. 默認(rèn)參數(shù)要設(shè)置在函數(shù)的原型中,而不能設(shè)置在函數(shù)的定義語句中D. 設(shè)置默認(rèn)參數(shù)可使用表達(dá)式,但表達(dá)式中不可用局部變量【結(jié)果分析】在C+中,在函數(shù)原型中可以為一個(gè)或多個(gè)參數(shù)指定默認(rèn)值。對函數(shù)參數(shù)設(shè)置默認(rèn)值要注意以下幾點(diǎn)。若沒有聲明函數(shù)原型,參數(shù)的默認(rèn)值可在函數(shù)定義的頭部進(jìn)行設(shè)置,否則必須在函數(shù)原型中進(jìn)行設(shè)置。在一個(gè)指定了默認(rèn)值的參數(shù)右邊不能出現(xiàn)沒有指定默認(rèn)值的參數(shù)。設(shè)置默認(rèn)參數(shù)可使用表達(dá)式,但表達(dá)式中不可用局部變量。(8) 下面說法正確的是( BC )。A. 所有的函數(shù)都可以說明為內(nèi)聯(lián)函數(shù)B. 具有循環(huán)語句、switch語句的函數(shù)不能說明為內(nèi)聯(lián)函數(shù)C. 使用內(nèi)聯(lián)函數(shù),可以加快程
17、序執(zhí)行的速度,但會增加程序代碼的大小D. 使用內(nèi)聯(lián)函數(shù),可以減小程序代碼大小,但使程序執(zhí)行的速度減慢【結(jié)果分析】內(nèi)聯(lián)函數(shù)主要是解決程序的運(yùn)行效率問題。在程序編譯時(shí),編譯系統(tǒng)將程序中出現(xiàn)內(nèi)聯(lián)函數(shù)調(diào)用的地方用函數(shù)體進(jìn)行替換,進(jìn)而減少了程序運(yùn)行的時(shí)間,但會增加程序代碼的大小。它是以空間換取時(shí)間,因此內(nèi)聯(lián)函數(shù)適用于功能不太復(fù)雜,但要求被頻繁調(diào)用的函數(shù)。(9) 一個(gè)函數(shù)功能不太復(fù)雜,但要求被頻繁調(diào)用,應(yīng)選用( A )。A. 內(nèi)聯(lián)函數(shù) B. 重載函數(shù) C. 遞歸函數(shù) D. 嵌套函數(shù)(10) C+對C語言做了很多改進(jìn),下列描述中使得C語言發(fā)生了質(zhì)變,即從面向過程變成面向?qū)ο蟮氖牵?D )。A. 增加了一些新
18、的運(yùn)算符B. 允許函數(shù)重載,并允許設(shè)置默認(rèn)參數(shù)C. 規(guī)定函數(shù)說明必須用原型D. 引進(jìn)了類和對象的概念【結(jié)果分析】面向?qū)ο?對象+類+繼承+消息+多態(tài)四、 判斷題(1) C+程序中,不得使用沒有定義或說明的變量。( )(2) 使用const說明常量時(shí),可以不必指出類型。( )【結(jié)果分析】如果用const 定義的是一個(gè)整型常量,則類型說明符int可以省略。(3) 引用被創(chuàng)建時(shí)可以用任意變量進(jìn)行初始化。( )【結(jié)果分析】對引用初始化必須使用同類型的變量。(4) 一個(gè)返回引用的調(diào)用函數(shù)可以作為左值。( )(5) 函數(shù)可以沒有參數(shù),也可以沒有返回值。( )(6) 沒有參數(shù)的兩個(gè)函數(shù)是不能重載的。( )(
19、7) 函數(shù)可設(shè)置默認(rèn)參數(shù),但不允許將一個(gè)函數(shù)的所有參數(shù)都設(shè)置為默認(rèn)參數(shù)。( )【結(jié)果分析】函數(shù)可設(shè)置默認(rèn)參數(shù),且允許將一個(gè)函數(shù)的所有參數(shù)都設(shè)置為默認(rèn)參數(shù)。(8) 運(yùn)算符new分配的空間由運(yùn)算符delete釋放。( )五、 簡答題(1) 名字空間的用途是什么?【問題解答】名字空間用來防止命名的沖突。(2) 引用有何用處?【問題解答】除了獨(dú)立引用外,在C+程序中,引用的主要用途是用作函數(shù)參數(shù)和函數(shù)的返回值。(3) 比較值調(diào)用和引用調(diào)用的相同點(diǎn)與不同點(diǎn)?!締栴}解答】在值調(diào)用機(jī)制中,作為實(shí)參的表達(dá)式的值被復(fù)制到由對應(yīng)的形參名所標(biāo)識的一個(gè)對象中,作為形參的初始值。函數(shù)體對形參的訪問、修改都是在這個(gè)標(biāo)識對
20、象上操作的,與實(shí)參無關(guān),即數(shù)據(jù)的傳遞是單向的。使用引用作函數(shù)的形參時(shí),調(diào)用函數(shù)的實(shí)參要用變量名。實(shí)參傳遞給形參,相當(dāng)于在被調(diào)用函數(shù)中使用了實(shí)參的別名。于是,在被調(diào)用函數(shù)中對形參的操作實(shí)質(zhì)是對實(shí)參的直接操作,即數(shù)據(jù)的傳遞是雙向的。(4) 內(nèi)聯(lián)函數(shù)有什么作用?它有哪些特點(diǎn)?【問題解答】內(nèi)聯(lián)函數(shù)是使用inline關(guān)鍵字聲明的函數(shù)。在程序編譯時(shí),編譯系統(tǒng)將程序中出現(xiàn)內(nèi)聯(lián)函數(shù)調(diào)用的地方用函數(shù)體進(jìn)行替換,進(jìn)而減少了程序運(yùn)行的時(shí)間。使用內(nèi)聯(lián)函數(shù)應(yīng)注意以下幾點(diǎn)。遞歸函數(shù)不能定義為內(nèi)聯(lián)函數(shù)。內(nèi)聯(lián)函數(shù)一般適合于不含有switch和while等復(fù)雜的結(jié)構(gòu)且只有15條語句的小函數(shù),否則編譯系統(tǒng)將該函數(shù)視為普通函數(shù)。內(nèi)
21、聯(lián)函數(shù)只能先定義后使用,否則編譯系統(tǒng)也將該函數(shù)視為普通函數(shù)。對內(nèi)聯(lián)函數(shù)也不能進(jìn)行異常接口聲明。(5) 函數(shù)原型中的參數(shù)名與函數(shù)定義中的參數(shù)名以及函數(shù)調(diào)用中的參數(shù)名必須一致嗎?【問題解答】不必一致。所有的參數(shù)是根據(jù)位置和類型而不是名字來區(qū)分的。(6) 重載函數(shù)時(shí)通過什么來區(qū)分?【問題解答】編譯系統(tǒng)將根據(jù)函數(shù)參數(shù)的類型和個(gè)數(shù)來判斷使用哪一個(gè)函數(shù)。六、 程序分析題(寫出程序的輸出結(jié)果,并分析結(jié)果)#include using namespace std;int main() int num=50;int& ref=num; ref=ref+10; coutnum=numendl; num=num+4
22、0; coutref=refendl; return 0; 【輸出結(jié)果】num=60ref=100【問題分析】本題主要考查引用的含義?!窘Y(jié)果分析】程序首先定義一個(gè)int類型的對象num,并給它賦初始值50。然后又定義了一個(gè)int類型的引用ref,并將它和num相聯(lián)系。這樣,無論是對num還是對ref進(jìn)行操作,實(shí)際上都是對那個(gè)一開始放著50的物理單元的內(nèi)容進(jìn)行操作。七、 程序設(shè)計(jì)題寫出一個(gè)完整的C+程序,使用系統(tǒng)函數(shù)pow(x,y)計(jì)算xy的值,注意包含頭文件cmath?!締栴}分析】本題主要考查簡單的輸入輸出和標(biāo)準(zhǔn)庫函數(shù)的調(diào)用方法?!窘忸}思路】 由于要用到系統(tǒng)函數(shù)pow(x,y),所以要包含頭文
23、件cmath。 要計(jì)算xy的值,首先必須知道x和y的值。為了程序的通用性,最好通過交互的方式輸入x和y的值。【參考程序】/ xt2_1.cpp#include #include using namespace std;int main() float x,y;coutxy;float z=pow(x,y);coutpow(x,y)=z(6) 關(guān)于成員函數(shù)的說法中不正確的是( C )。A. 成員函數(shù)可以無返回值B. 成員函數(shù)可以重載 C. 成員函數(shù)一定是內(nèi)聯(lián)函數(shù)D. 成員函數(shù)可以設(shè)定參數(shù)的默認(rèn)值【結(jié)果分析】與普通函數(shù)不同的是,成員函數(shù)是屬于某個(gè)類的。成員函數(shù)的實(shí)現(xiàn),可以放在類體內(nèi),也可以放在類體
24、外。在類體外實(shí)現(xiàn)的成員函數(shù)不再是內(nèi)聯(lián)函數(shù)。(7) 下面對構(gòu)造函數(shù)的不正確描述是( B )。A. 系統(tǒng)可以提供默認(rèn)的構(gòu)造函數(shù)B. 構(gòu)造函數(shù)可以有參數(shù),所以也可以有返回值C. 構(gòu)造函數(shù)可以重載D. 構(gòu)造函數(shù)可以設(shè)置默認(rèn)參數(shù)【結(jié)果分析】構(gòu)造函數(shù)不能指定返回類型,即使是void類型也不可以,當(dāng)然不可能有返回值。(8) 假定A是一個(gè)類,那么執(zhí)行語句“A a,b(3),*p; ”調(diào)用了( B ) 次構(gòu)造函數(shù)。A. 1 B. 2 C. 3 D. 4【結(jié)果分析】聲明指針是不會調(diào)用構(gòu)造函數(shù)的。(9) 下面對析構(gòu)函數(shù)的正確描述是( AC )。A. 系統(tǒng)可以提供默認(rèn)的析構(gòu)函數(shù) B. 析構(gòu)函數(shù)必須由用戶定義C. 析構(gòu)
25、函數(shù)沒有參數(shù) D. 析構(gòu)函數(shù)可以設(shè)置默認(rèn)參數(shù)【結(jié)果分析】析構(gòu)函數(shù)的作用是在對象消失時(shí)執(zhí)行一項(xiàng)清理任務(wù)。如果一個(gè)類中沒有定義析構(gòu)函數(shù),系統(tǒng)將自動(dòng)生成一個(gè)默認(rèn)析構(gòu)函數(shù)。析構(gòu)函數(shù)沒有參數(shù),當(dāng)然不可能設(shè)置默認(rèn)參數(shù)。(10) 類的析構(gòu)函數(shù)是( D )時(shí)被調(diào)用的。A. 類創(chuàng)建 B. 創(chuàng)建對象 C. 引用對象 D. 釋放對象(11) 創(chuàng)建一個(gè)類的對象時(shí),系統(tǒng)自動(dòng)調(diào)用( B ); 撤銷對象時(shí),系統(tǒng)自動(dòng)調(diào)用( C )。A. 成員函數(shù) B. 構(gòu)造函數(shù) C. 析構(gòu)函數(shù) D. 復(fù)制構(gòu)造函數(shù)(12) 通常拷貝構(gòu)造函數(shù)的參數(shù)是( C )。A. 某個(gè)對象名 B. 某個(gè)對象的成員名C. 某個(gè)對象的引用名 D. 某個(gè)對象的指針
26、名(13) 關(guān)于this指針的說法正確的是( B )。A. this指針必須顯式說明B. 當(dāng)創(chuàng)建一個(gè)對象后,this指針就指向該對象C. 成員函數(shù)擁有this指針D. 靜態(tài)成員函數(shù)擁有this指針。【結(jié)果分析】this指針是由C+編譯器自動(dòng)產(chǎn)生且較常用的一個(gè)隱含對象指針,它不能被顯式聲明。當(dāng)創(chuàng)建一個(gè)對象時(shí),this指針就初始化指向該對象。但只有非靜態(tài)成員函數(shù)才擁有this指針,并通過該指針來處理對象。(14) 下列關(guān)于子對象的描述中,( B )是錯(cuò)誤的。A. 子對象是類的一種數(shù)據(jù)成員,它是另一個(gè)類的對象B. 子對象可以是自身類的對象C. 對子對象的初始化要包含在該類的構(gòu)造函數(shù)中D. 一個(gè)類中能
27、含有多個(gè)子對象作其成員【結(jié)果分析】子對象不可以是自身類的對象。(15) 對new運(yùn)算符的下列描述中,( B )是錯(cuò)誤的。A. 它可以動(dòng)態(tài)創(chuàng)建對象和對象數(shù)組B. 用它創(chuàng)建對象數(shù)組時(shí)必須指定初始值C. 用它創(chuàng)建對象時(shí)要調(diào)用構(gòu)造函數(shù)D. 用它創(chuàng)建的對象數(shù)組可以使用運(yùn)算符delete來一次釋放【結(jié)果分析】使用運(yùn)算符new創(chuàng)建對象數(shù)組的格式如下: new 其中,給出數(shù)組的大小,后面不能再跟構(gòu)造函數(shù)參數(shù),所以用它創(chuàng)建對象數(shù)組時(shí)不能指定初始值。(16) 對delete運(yùn)算符的下列描述中,( D )是錯(cuò)誤的。A. 用它可以釋放用new運(yùn)算符創(chuàng)建的對象和對象數(shù)組B. 用它釋放一個(gè)對象時(shí),它作用于一個(gè)new所返回
28、的指針C. 用它釋放一個(gè)對象數(shù)組時(shí),它作用的指針名前須加下標(biāo)運(yùn)算符 D. 用它可一次釋放用new運(yùn)算符創(chuàng)建的多個(gè)對象【結(jié)果分析】用delete一次只能釋放用new創(chuàng)建的1個(gè)對象,但可釋放一個(gè)對象數(shù)組。(17) 關(guān)于靜態(tài)數(shù)據(jù)成員,下面敘述不正確的是( C )。A. 使用靜態(tài)數(shù)據(jù)成員,實(shí)際上是為了消除全局變量B. 可以使用“對象名.靜態(tài)成員”或者“類名靜態(tài)成員”來訪問靜態(tài)數(shù)據(jù)成員C. 靜態(tài)數(shù)據(jù)成員只能在靜態(tài)成員函數(shù)中引用 D. 所有對象的靜態(tài)數(shù)據(jù)成員占用同一內(nèi)存單元【結(jié)果分析】靜態(tài)數(shù)據(jù)成員可以在靜態(tài)成員函數(shù)中引用,也可以在非靜態(tài)成員函數(shù)中引用。(18) 對靜態(tài)數(shù)據(jù)成員的不正確描述是( CD )。A
29、. 靜態(tài)成員不屬于對象,是類的共享成員B. 靜態(tài)數(shù)據(jù)成員要在類外定義和初始化C. 調(diào)用靜態(tài)成員函數(shù)時(shí)要通過類或?qū)ο蠹せ?,所以靜態(tài)成員函數(shù)擁有this指針D. 只有靜態(tài)成員函數(shù)可以操作靜態(tài)數(shù)據(jù)成員【結(jié)果分析】this指針是一個(gè)局部量,局部于某個(gè)對象,而靜態(tài)成員函數(shù)是屬于整個(gè)類而不是某個(gè)對象,它沒有this指針。靜態(tài)成員函數(shù)和非靜態(tài)成員函數(shù)均可操作靜態(tài)數(shù)據(jù)成員。(19) 下面的選項(xiàng)中,靜態(tài)成員函數(shù)不能直接訪問的是( D )。A. 靜態(tài)數(shù)據(jù)成員 B. 靜態(tài)成員函數(shù) C. 類以外的函數(shù)和數(shù)據(jù) D. 非靜態(tài)數(shù)據(jù)成員【結(jié)果分析】由于靜態(tài)成員函數(shù)沒有this指針,它只能直接訪問該類的靜態(tài)數(shù)據(jù)成員、靜態(tài)成員函
30、數(shù)和類以外的函數(shù)和數(shù)據(jù),訪問類中的非靜態(tài)數(shù)據(jù)成員必須通過參數(shù)傳遞方式得到對象名,然后通過對象名來訪問。(20) 在類的定義中,引入友元的原因是( A )。A. 提高效率 B. 深化使用類的封裝性 C. 提高程序的可讀性 D. 提高數(shù)據(jù)的隱蔽性【結(jié)果分析】友元的作用主要是為了提高效率和方便編程,但友元破壞了類的封裝性和隱蔽性,使用時(shí)要權(quán)衡利弊。(21) 友元類的聲明方法是( A )。A. friend class; B. youyuan class; C. class friend; D. friends class; (22) 下面對友元的錯(cuò)誤描述是( D )。A. 關(guān)鍵字friend用于聲明
31、友元B. 一個(gè)類中的成員函數(shù)可以是另一個(gè)類的友元C. 友元函數(shù)訪問對象的成員不受訪問特性影響D. 友元函數(shù)通過this指針訪問對象成員【結(jié)果分析】友元函數(shù)是一個(gè)放在類中的普通函數(shù),它沒有this指針。(23) 下面選項(xiàng)中,( C )不是類的成員函數(shù)。A. 構(gòu)造函數(shù) B. 析構(gòu)函數(shù) C. 友元函數(shù) D. 拷貝構(gòu)造函數(shù)三、 簡答題(1) 類與對象有什么關(guān)系?【問題解答】類是一種用戶自己定義的數(shù)據(jù)類型,和其他數(shù)據(jù)類型不同的是,組成這種類型的不僅可以有數(shù)據(jù),而且可以有對數(shù)據(jù)進(jìn)行操作的函數(shù)。程序員可以使用這個(gè)新類型在程序中聲明新的變量,具有類類型的變量稱為對象。創(chuàng)建對象時(shí),類被用做樣板,對象稱為類的實(shí)例
32、。(2) 類定義的一般形式是什么?其成員有哪幾種訪問權(quán)限? 【問題解答】定義類一般形式為: class類名public:protected:private:;訪問權(quán)限共有3種: 分別是公有(public)、保護(hù)(protected)和私有(private)。(3) 類的實(shí)例化是指創(chuàng)建類的對象還是定義類?【問題解答】指創(chuàng)建類的對象。(4) 什么是this指針?它的主要作用是什么?【問題解答】this指針是C+語言為成員函數(shù)提供的一個(gè)隱含對象指針,它不能被顯式聲明。this指針是一個(gè)局部量,局部于某個(gè)對象。不同的對象調(diào)用同一個(gè)成員函數(shù)時(shí),編譯器根據(jù)this指針來確定應(yīng)該引用哪一個(gè)對象的數(shù)據(jù)成員。(
33、5) 什么叫做拷貝構(gòu)造函數(shù)?拷貝構(gòu)造函數(shù)何時(shí)被調(diào)用?【問題解答】拷貝構(gòu)造函數(shù)是一種特殊的構(gòu)造函數(shù),它的作用是用一個(gè)已經(jīng)存在的對象去初始化另一個(gè)對象。為了保證所引用的對象不被修改,通常把引用參數(shù)聲明為const參數(shù)。在以下3種情況下,拷貝構(gòu)造函數(shù)都會被自動(dòng)調(diào)用: 當(dāng)用類的一個(gè)對象去初始化該類的另一個(gè)對象時(shí); 當(dāng)函數(shù)的形參是類的對象,進(jìn)行形參和實(shí)參結(jié)合時(shí); 當(dāng)函數(shù)的返回值是類的對象,函數(shù)執(zhí)行完成返回調(diào)用者時(shí)。四、 程序分析題(寫出程序的輸出結(jié)果,并分析結(jié)果)(1) #include using namespace std;class Testprivate:int num;public:Test(
34、);/ 默認(rèn)構(gòu)造函數(shù)Test(int n); / 帶一個(gè)參數(shù)構(gòu)造函數(shù);TestTest() coutInit defaendl;num=0;TestTest(int n) coutInit nendl;num=n;int main()Test x2;/ 語句1Test y(15); / 語句2return 0;【輸出結(jié)果】Init defaInit defaInit 15【問題分析】本題主要考查構(gòu)造函數(shù)的調(diào)用時(shí)機(jī)和構(gòu)造函數(shù)的匹配問題?!疽c(diǎn)提示】構(gòu)造函數(shù)在創(chuàng)建對象時(shí)被自動(dòng)調(diào)用,具體調(diào)用哪個(gè)構(gòu)造函數(shù)將由編譯系統(tǒng)根據(jù)重載函數(shù)的匹配原則來確定?!窘Y(jié)果分析】 程序聲明了2個(gè)對象x和y,類中有2個(gè)構(gòu)造函
35、數(shù)。 程序首先執(zhí)行語句1,創(chuàng)建對象x,調(diào)用默認(rèn)構(gòu)造函數(shù)。由于對象x是對象數(shù)組,每個(gè)數(shù)組元素被創(chuàng)建時(shí)都要調(diào)用構(gòu)造函數(shù),所以默認(rèn)構(gòu)造函數(shù)被調(diào)用了2次,輸出第1、2行結(jié)果。程序接著執(zhí)行語句2,創(chuàng)建對象y,調(diào)用帶一個(gè)參數(shù)的構(gòu)造函數(shù),輸出第3行結(jié)果。(2) #include using namespace std;class Xxprivate:int num;public:Xx(int x)num=x; / 構(gòu)造函數(shù)Xx()coutdst numendl; / 析構(gòu)函數(shù);int main()Xx w(5); / 語句1coutExit mainendl; / 語句2return 0;【輸出結(jié)果】Exi
36、t maindst 5【問題分析】本題主要考查析構(gòu)函數(shù)的調(diào)用時(shí)機(jī)?!疽c(diǎn)提示】析構(gòu)函數(shù)在釋放對象時(shí)被自動(dòng)調(diào)用。【結(jié)果分析】 程序聲明了一個(gè)對象w。 程序首先執(zhí)行語句1,創(chuàng)建對象w,調(diào)用構(gòu)造函數(shù),num得到初值5。程序接著執(zhí)行語句2,輸出第1行結(jié)果。當(dāng)程序結(jié)束時(shí),釋放對象w,析構(gòu)函數(shù)被調(diào)用,輸出第2行結(jié)果。(3) 將例3.10中的Whole類如下修改,其他部分不變,寫出輸出結(jié)果。class Wholepublic:Whole(int i); / Whole的有參構(gòu)造函數(shù)Whole(); / Whole的無參構(gòu)造函數(shù)Whole(); / Whole的析構(gòu)函數(shù)private:Part p1;/ 子對象1Part p2;/ 子對象2Part p3;/ 子對象3 ;WholeWhole(int i):p2(i),p1()coutConstructor of Wholeendl;WholeWhole()coutDestructor of Wholeendl;【輸出結(jié)果】Default constructor of PartConstructor of Part,3Default construc
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 西華師范大學(xué)《商務(wù)文案設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 西安理工大學(xué)《跨文化商務(wù)交際導(dǎo)論》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年高鐵站區(qū)建筑勞務(wù)清包合同
- 2024版條碼設(shè)備維護(hù)保養(yǎng)協(xié)議版
- 2024房地產(chǎn)買賣合同(含裝修及配套設(shè)施)
- 二零二五年度跨境電商代理運(yùn)輸服務(wù)協(xié)議
- 2024版禁牧管理員合同
- 2024版二人合作創(chuàng)業(yè)開店協(xié)議要覽版B版
- 二零二五年度能源行業(yè)核心技術(shù)人員保密及競業(yè)限制合同2篇
- 二零二五版國有企業(yè)法人借款合同合規(guī)審查要點(diǎn)3篇
- 電商公司售后服務(wù)管理制度
- 火災(zāi)應(yīng)急處理課件
- 創(chuàng)新者的逆襲3:新質(zhì)生產(chǎn)力的十八堂案例課-記錄
- 2024年河南省公務(wù)員考試《行測》真題及答案解析
- 2022-2024北京初三二模英語匯編:話題作文
- 人教版八年級英語上冊Unit1-10完形填空閱讀理解專項(xiàng)訓(xùn)練
- 2024年湖北省武漢市中考英語真題(含解析)
- GB/T 44561-2024石油天然氣工業(yè)常規(guī)陸上接收站液化天然氣裝卸臂的設(shè)計(jì)與測試
- 《城市綠地設(shè)計(jì)規(guī)范》2016-20210810154931
- 網(wǎng)球場經(jīng)營方案
- 2024年公司保密工作制度(四篇)
評論
0/150
提交評論