C++簡答題復(fù)習(xí)_第1頁
C++簡答題復(fù)習(xí)_第2頁
C++簡答題復(fù)習(xí)_第3頁
C++簡答題復(fù)習(xí)_第4頁
C++簡答題復(fù)習(xí)_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第一章 概述1、簡述C+的發(fā)展簡況。答:C+語言是從C語言發(fā)展而來的,C 語言是一種編譯型的面向過程的程序設(shè)計語言,它最早是從英國劍橋大學(xué)一個名叫Martin Richards的學(xué)者在60年代開發(fā)的BCPL( 即Basic Combind Programming Language)語言的基礎(chǔ)之上發(fā)展而來的。BCPL語言是Martin Richards在開發(fā)系統(tǒng)軟件時,作為描述性語言而使用的一種程序設(shè)計語言。1970年,美國Bell實驗室的 Ken?Thompson在軟件開發(fā)工作中,繼承和發(fā)展了BCPL語言的許多特點,進(jìn)一步提出了一種叫“B語言”的語言。隨后,在美國Bell實驗室實現(xiàn)的更新型的小

2、型機PDP-11的UNIX操作系統(tǒng)的研發(fā)工作中,于1972年推出了一種新型的程序語言 C語言,該語言一經(jīng)推出就在國際上廣泛流行。20世紀(jì)80年代,由于軟件工程的需要,面向?qū)ο蟪绦蛟O(shè)計方法在軟件設(shè)計領(lǐng)域引起了普遍的重視,AT&T Bell實驗室的計算機科學(xué)家Bjarne Stroustrup結(jié)合流行的C語言的所有成分,開發(fā)出了面向?qū)ο蟮某绦蛟O(shè)計語言C+。2、C+語言有那些主要特點?答: C + 語言具有以下主要特點: (1) C+語言是一個中級的程序設(shè)計語言。 (2) C+是一個結(jié)構(gòu)化的程序設(shè)計語言 。(3) C+是一種面向?qū)ο蟮某绦蛟O(shè)計語言。(4) C+語言是一個功能齊全的編程語言。(5) C

3、+語言是一種移植性很好的編程語言 。3、編寫的C+語言的程序主要由那些基本組成部分構(gòu)成?答:C+語言的程序主要由以下幾個基本組成部分構(gòu)成:(1) 預(yù)處理命令:C+語言提供了三類預(yù)處理命令:宏定義命令(define)、文件包含命令(include)、條件編譯命令(ifelseendif),(2) 輸入/輸出語句(Input/Output語句,簡稱I/O語句):C+語言的程序中總是少不了輸入和輸出的語句,實現(xiàn)與程序內(nèi)部的信息交流。(3) 函數(shù)(Function):C+的程序是由若干個文件組成的,每個文件又是由若干個函數(shù)組成,因此,可以認(rèn)為C+的程序就是函數(shù)串,即由若干個函數(shù)組成,函數(shù)與函數(shù)之間是相

4、對的,并且是并行的,函數(shù)之間可以調(diào)用。(4) 語句(Statement):語句是組成程序的基本單元。每個函數(shù)都是由若干條語句組成的。(5) 變量(Variable):變量是通過說明語句來定義的,多數(shù)程序都需要說明變量和使用變量。(6)其他:除了以上講述的5個部分以外,還有其他組成部分。例如,符號常量和注釋信息等也是程序的一部分。C+程序中盡量把有些常量定義為符號常量,而在C+的程序中使用符號常量,該符號常量代表著某個確定的常量值。4、C+語言編寫的程序代碼有那些格式特點?答:C+語言編寫的源代碼程序的格式具有以下特點: (1)C+語言的關(guān)鍵字是小寫字符構(gòu)成的,習(xí)慣上也使用小寫字母書寫程序;(2

5、)大多數(shù)語句結(jié)尾必須用 ; 作為終止符, 否則C+不認(rèn)為該語句的結(jié)束;(3)每個程序必須有一個且只能有一個主函數(shù),其名稱為main()的函數(shù);(4)每個函數(shù)的函數(shù)體 (包括主函數(shù)和每個子函數(shù)) 必須用一對花括號和括起來;(5)一個較完整的程序文件大致含有: 包括文件程序段(一組#include語句)、函數(shù)說明部分、全局變量說明、主函數(shù)和若干個子函數(shù)組成。在主函數(shù)和子函數(shù)中又包括局部變量定義、庫函數(shù)調(diào)用、流程控制語句、用戶函數(shù)的調(diào)用語句等;(6)注釋部分包含在/*和*/之間或/之后, 在編譯時它將被C+編譯器忽略; (7)像其它一些語言一樣, C+的變量在使用之前必須先說明其數(shù)據(jù)類型, 未經(jīng)說明

6、的變量不能使用。說明變量類型應(yīng)在可執(zhí)行語句前面, 如上例main()函數(shù)中的第一條語句就是變量說明語句, 它必須放在所用的執(zhí)行語句前面。 (8)在C+語言中, 大小寫字母是有區(qū)別的, 相同字母的大小寫代表不同的變量; 5、 編寫C+語言程序,在書寫格式上應(yīng)該遵從哪些基本原則?答:為了使程序結(jié)構(gòu)更加清楚、易于閱讀、維護(hù)和修改,在書寫格式上應(yīng)該遵從以下基本原則:(1)一般一行只寫一條語句;(2)一條復(fù)雜語句采用多行,如分支語句和循環(huán)語句;(3)遇到嵌套語句應(yīng)向后縮進(jìn), 必要時對程序增加適當(dāng)?shù)淖⑨屝小?6、什么叫關(guān)鍵字?什么叫標(biāo)識符?答:關(guān)鍵字(Keyword)也叫保留字(Reserved Word

7、)。所謂關(guān)鍵字就是指已被C+語言本身使用, 不能作為其它用途使用的單詞。標(biāo)識符是用戶為程序中各種需要命名的元素所起的名稱。第二章 數(shù)據(jù)與運算1、什么數(shù)據(jù) ?什么叫數(shù)據(jù)類型 ?答:數(shù)據(jù)是指能輸入到計算機中,并能被計算機處理和加工的對象。數(shù)據(jù)類型是對系統(tǒng)中實體的一種抽象,它描述了某種實體的基本特性,不同類型數(shù)據(jù)的表示、所占存儲空間的大小以及定義在其上的操作是不同的。2、C+語言有哪些基本數(shù)據(jù)類型?其值域是什么?類型名稱長度(字節(jié))值 域char1-128127或0255(使用/J編譯選項)signed char1-128127unsigned char10255bool1非零(true), 零(f

8、alse)short(signed short)2-3276832767unsigned short20-65535int( signed int)4-21474836482147483647unisnged int404294967295long(signed long)4-21474836482147483647unisnged long404294967295float41.175494351e-383.402823466e+38(正數(shù))double82.22514e-3081.7976931348623158e+308(正數(shù))3、C+語言有哪些常量?請給出實例。答:C+語言共有六種常量

9、,分別如下:(1)整型常量整型常量通常簡稱為整數(shù)。C+語言的整數(shù)可以是十進(jìn)制數(shù)、八進(jìn)制數(shù)和十六進(jìn)制數(shù)。例如,十進(jìn)制的數(shù)值3356可以有下列三種不同的表示形式:十進(jìn)制數(shù) 3356;八進(jìn)制數(shù) 06434 ;十六進(jìn)制數(shù) 0xd1c(2)浮點常量浮點常量又稱為實數(shù),一般含有小數(shù)部分。例如,-0.6523, .08765, 1234.0, 9.9999, 98., 5.544, 2355.876554都是一般形式的實數(shù)。(3)字符常量所謂字符常量是指一個單一字符, 其表示形式是由兩個單引號包括的一個字符。例如, A, a, Q, 0, 9, +, :, ?, $ 都是字符常量。(4)字符串常量所謂字符串

10、常量是指用雙引號括起來的一串字符來表示的數(shù)據(jù)下面給出幾個字符串常量的例子:Hello!, A Graduate Student, 9, Bill Gates, 李四北京海淀學(xué)院路29號, 姓名:, , (5)標(biāo)識常量所謂標(biāo)識常量是指用標(biāo)識符代替常量使用的一種常量, 其名稱通常是一個標(biāo)識符。標(biāo)識常量的一般說明形式為:#define 例如,#define MAX 50#define PI 3.1415926#define ERROR -1其中,MAX、PI以及ERROR都是標(biāo)識常量, 它們代替的常量分別是50、3.1415926、和-1 。(6)換碼序列所謂換碼序列是用反斜線后面跟有一個字符或者一

11、個或不超過3個的數(shù)字來表示的控制代碼的換碼序列如下表所示, 它們的表示形式是在反斜線后面跟有一個小寫英文字母。例如,a,, , 056, x05a4、 什么叫說明語句?怎樣說明的變量為局部變量?怎樣說明的變量為全局變量?答:一般來說,變量在使用以前,必須說明才能使用。用來說明已有類型的變量的語句稱為變量說明語句。變量說明的一般形式是: ;在上面變量說明的式子里,之后有一個分號“;”意味著它是一個語句,該語句我們通常稱為變量的說明語句。在函數(shù)體或程序段內(nèi)說明的變量只能在定義它的函數(shù)體內(nèi)或程序段內(nèi)可以訪問,這種變量通常稱為局部變量;在函數(shù)體外說明的變量可以在說明它的文件中所有函數(shù)里或程序段中訪問,

12、也可以通過extern被其它文件中的函數(shù)或程序段訪問,這種變量通常稱為全局變量。5、說明變量時有哪些存儲類型?其含義是什么?答:C+語言支持四種存儲類型:auto, register, static和extern。(1) auto稱為自動型也稱為堆棧型,用auto存儲類型說明的變量都是局部于某個程序范圍內(nèi)的,只能在某個程序范圍內(nèi)使用,通常在函數(shù)體內(nèi)或函數(shù)中的復(fù)合語句里。(2) register稱為寄存器型,使用register關(guān)鍵詞說明的變量主要目的是想將所說明的變量放入CPU的寄存器存儲空間中,這樣可以加快程序的運行速度。(3) static稱為靜態(tài)存儲類型,在C+語言中,既可以在函數(shù)體內(nèi),

13、也可在函數(shù)體外說明static 存儲類型的變量。在函數(shù)體內(nèi)說明的static 存儲類型的變量也是一種局部變量,與auto最大不同點是:static存儲類型的變量在內(nèi)存中是以固定地址存放的,而不是以堆棧方式存放的;只要整個程序還在繼續(xù)運行靜態(tài)變量就不會隨著說明它的程序段的結(jié)束而消失,它下次再調(diào)用該函數(shù),該存儲類型的變量不再重新說明,而且還保留上次調(diào)用存入的數(shù)值。(4) extern稱為外部參照引用型,使用extern說明的變量是想引用在其它文件中函數(shù)體外部說明的變量。當(dāng)變量在一個文件中的函數(shù)體外說明,所有其他文件中的函數(shù)或程序段都可引用這個變量。這種變量的作用域是所有的函數(shù)和程序段,一般用于在函

14、數(shù)之間傳遞數(shù)據(jù)。6、什么叫常量化變量?其作用是什么?所謂常量化變量是指將一個變量說明為一個常量。作用:當(dāng)一個變量被說明為常量時,那么該變量在程序執(zhí)行過程中其值是不能改變的。也就是說,不能再向常量化的變量再賦值。因此,常量化變量在說明時就必須賦給一個數(shù)值。常量化的變量基本上和常量一樣。7、什么叫數(shù)組?說說short型的數(shù)組與char型的數(shù)組的異同點。答:所謂數(shù)組是具有一定順序關(guān)系的若干個變量的集合,組成數(shù)組的各個變量稱為數(shù)組的元素。數(shù)組中各元素的數(shù)據(jù)類型要求相同。數(shù)組可以是一維的,也可以是多維的。char型的數(shù)組由包含ASCII字符集中的字符(英文字母、數(shù)字、標(biāo)點符號以及某些特殊符號)的整數(shù)類型

15、組成的數(shù)組。short型的數(shù)組是由short數(shù)據(jù)類型組成的數(shù)組。類型short (或short int)是一種短整數(shù)類型,它占用字節(jié)的長度大于類型char, 小于或等于類型int。8、什么叫表達(dá)式?什么叫表達(dá)式語句?答:所謂表達(dá)式是指由運算符、運算量和標(biāo)點符號組成的有效序列,其目的是用來說明一個計算過程。表達(dá)式可以獨立形成語句,該語句稱為表達(dá)式語句9、什么叫左值?什么叫右值?答:所謂左值是指能夠出現(xiàn)在賦值表達(dá)式左邊的表達(dá)式。所謂右值是指只能出現(xiàn)在賦值表達(dá)式的右邊的數(shù)值。第四章 指針1、什么叫內(nèi)存單元的地址?什么叫指針?答:在計算機內(nèi)部的存儲器(簡稱內(nèi)存)中,每一個字節(jié)單元,都有一個編號,稱為地

16、址。內(nèi)存單元的編號,稱為內(nèi)存單元的地址。在C+語言中,內(nèi)存單元的地址稱為指針。2、什么叫指針變量?什么叫指針的目標(biāo)?答:專門用來存放地址的變量,稱為指針變量(pointer variable)。指針指向的內(nèi)存區(qū)域中的數(shù)據(jù)稱為指針的目標(biāo)。3、什么叫空指針?其作用是什么?答:所謂空指針就是指針變量的內(nèi)容為零的狀態(tài)。4、指針運算的實質(zhì)是什么?答:指針運算是以指針變量所存放的地址量作為運算量而進(jìn)行的運算。因此,指針運算的實質(zhì)就是地址的計算。5、指針有哪些運算?請枚舉這些計算。答:指針運算的種類是有限的,它只能進(jìn)行算術(shù)運算、關(guān)系運算和賦值運算。6、什么叫數(shù)組的指針?什么叫指針數(shù)組的指針?答:在C+語言中

17、,數(shù)組的指針是指數(shù)組在內(nèi)存中的起始地址。指針變量數(shù)組和普通的一般變量數(shù)組一樣,編譯系統(tǒng)在處理指針數(shù)組說明時, 按照指定的存儲類型為它在內(nèi)存中分配一定的連續(xù)存儲空間,這時指針數(shù)組名就表示該指針數(shù)組的存儲首地址,即指針數(shù)組的指針。7、什么叫二級指針變量?什么叫多級指針變量?答:對于指向處理數(shù)據(jù)的指針變量稱為一級指針變量,簡稱一級指針。而把指向一級指針變量的指針變量稱為二級指針變量,簡稱二級指針。我們把一個指向指針變量的指針變量,稱為多級指針變量。8、new運算符的作用是什么?delete運算符的作用是什么?答:運算符new主要用于分配內(nèi)存,并獲得分配到的內(nèi)存的首地址,通常需要將其賦給相應(yīng)數(shù)據(jù)類型的

18、指針。如果程序中不再需要由new分配的內(nèi)存空間時,用運算符delete釋放這些空間。9、什么叫引用? 答:所謂引用是指給一個變量或一個數(shù)組起一個別名。使用引用進(jìn)行運算的實質(zhì)是操作原來的變量或數(shù)組本身的另一個使用名稱。10、const型指針有幾種形式?其作用是什么?答:const型指針主要有下面三種形式:( a ) 常量化指針目標(biāo)表達(dá)式 :常量化指針目標(biāo)是限制通過指針改變其目標(biāo)的數(shù)值。( b ) 常量化指針變量 :常量化指針變量,使得的地址值不能修改。但可以通過*可以修改指針?biāo)赶蜃兞康臄?shù)值。 ( c ) 常量化指針變量及其目標(biāo)表達(dá)式:常量化指針變量及其目標(biāo)表達(dá)式,使得既不可以修改的地址,也不可

19、以通過*修改指針?biāo)赶蜃兞康闹怠?11、什么叫void型指針?其作用是什么?void型的指針變量是一種不確定數(shù)據(jù)類型的指針變量,它可以通過強制類型轉(zhuǎn)換讓該變量指向任何數(shù)據(jù)類型的變量或數(shù)組。第五章 函數(shù)與宏1、 請給出函數(shù)概念的基本描述。答:函數(shù)就是一個完成特定功能的代碼模塊,其程序代碼獨立,通常要求有返回值,也可以是空值。2、 什么叫函數(shù)原型?答:函數(shù)原型是指由函數(shù)定義中抽取出來的能代表函數(shù)應(yīng)用特征的部分,包括函數(shù)的數(shù)據(jù)類型、函數(shù)名稱、形式參數(shù)說明。3、 什么叫函數(shù)的實參?什么叫函數(shù)的形參?答:實參是在調(diào)用函數(shù)過程中傳遞給被調(diào)用函數(shù)的參數(shù);形參是被調(diào)用函數(shù)接受調(diào)用函數(shù)傳遞過來的數(shù)據(jù)的參數(shù)。4、

20、 請說出函數(shù)參數(shù)為一般變量的復(fù)制傳遞方式、地址傳遞方式和引用方式的異同點。答:復(fù)制傳遞方式是實參的數(shù)據(jù)拷貝給了形參變量,實參和形參是具有相同數(shù)據(jù)類型但存儲空間是不同的兩組空間。在復(fù)制傳遞方式下,被調(diào)用函數(shù)里對形參的操作不能改變實參的內(nèi)容。地址傳遞方式和復(fù)制傳遞方式正好相反,用函數(shù)的參數(shù)本身傳給被調(diào)用函數(shù)。被調(diào)用函數(shù)中對形參的操作將直接改變實參的值。調(diào)用函數(shù)將實參的地址傳送給被調(diào)用函數(shù),被調(diào)用函數(shù)對該地址的目標(biāo)操作即對實參本身的操作。按地址傳遞,實參為變量的地址,而形參為同類型的指針。引用方式和地址傳遞方式的效果一樣,但引用更直接、更方便。按引用傳遞,實參為變量,形參為同類型的引用。采用引用方式

21、實參和形參使用的是相同的內(nèi)存空間,只是名稱不同而已。5、 數(shù)組在函數(shù)間傳遞形式有哪些?并給以比較和解釋。答:數(shù)組在函數(shù)間的傳遞形式有復(fù)制傳遞方式、地址傳遞方式、引用方式和全局?jǐn)?shù)組傳遞方式。函數(shù)與函數(shù)之間數(shù)組的復(fù)制傳遞方式是調(diào)用函數(shù)將實參數(shù)組傳遞給被調(diào)用函數(shù)形參,形參接收是實參的地址。函數(shù)與函數(shù)之間數(shù)組的地址傳遞方式是將調(diào)用函數(shù)中的實參數(shù)組的起始地址傳遞給被調(diào)用函數(shù)的指針變量形參。被調(diào)用函數(shù)中對形參地址的目標(biāo)操作,相當(dāng)于對實參本身的操作,將直接改變實參數(shù)組的值。地址傳遞方式,實參應(yīng)該為數(shù)組的指針,而形參應(yīng)為同類型的指針變量。另外,數(shù)組的地址傳遞方式不僅要把實參數(shù)組的指針作為參數(shù)傳遞給函數(shù),同時還

22、需要傳遞數(shù)組的長度。與引用方式不同的是被調(diào)用函數(shù)的形參應(yīng)聲明為數(shù)組同類型的指針變量。函數(shù)與函數(shù)之間數(shù)組的引用傳遞方式需將被調(diào)用函數(shù)的形參說明為數(shù)組的引用形式。在被調(diào)用函數(shù)中,對形參進(jìn)行操作就是對實參數(shù)組的直接操作。數(shù)組的引用方式和地址傳遞方式的作用效果基本一樣,但引用更直接、更方便。按引用方式傳遞數(shù)組,形參為實參同類型的數(shù)組引用。但引用數(shù)組名不是指針變量,不能作為左值。6、 什么叫函數(shù)指針?什么叫指針函數(shù)?答:函數(shù)指針是一個函數(shù)執(zhí)行代碼的起始地址。指針函數(shù)是指一個函數(shù)的返回值為地址量的函數(shù)。7、 什么叫內(nèi)聯(lián)函數(shù)?答:內(nèi)聯(lián)函數(shù)是類聲明體里定義的函數(shù)或在類的實現(xiàn)部分定義的、其前用inline修飾的

23、函數(shù);它將簡單的函數(shù)(其內(nèi)不能有循環(huán)語句和開關(guān)語句)內(nèi)嵌到調(diào)用他的程序代碼中,這樣做的目的是為了節(jié)省了調(diào)用函數(shù)的開銷。8、 什么叫函數(shù)重載?答:函數(shù)重載是指使用一個函數(shù)名稱定義了多個完成不同功能的函數(shù),這些函數(shù)的輸入?yún)?shù)類型或個數(shù)不一樣,相應(yīng)的函數(shù)類型也有可能改變。9、 什么叫預(yù)編譯語句?在C+程序的源代碼中可以包括各種編譯用的命令語句,這些語句都稱為預(yù)編譯語句。10、 什么叫宏?談?wù)剮?shù)宏與內(nèi)聯(lián)函數(shù)之間的異同點.答:宏是指定義一個標(biāo)識符來代替一個字符序列。內(nèi)聯(lián)函數(shù)和宏都是在程序出現(xiàn)的地方展開,是在調(diào)用該函數(shù)的程序處或應(yīng)用宏處將它展開。但內(nèi)聯(lián)函數(shù)可以多行的程序段,而宏通常是單行代碼段。11、

24、 什么叫遞歸函數(shù)?簡述其執(zhí)行過程。答:遞歸函數(shù)是指一個函數(shù)的函數(shù)體中直接調(diào)用或間接調(diào)用了該函數(shù)自身的函數(shù)。遞歸函數(shù)調(diào)用的執(zhí)行過程分為兩個階段: (1)遞推階段:從原問題出發(fā),按遞歸公式遞推,從未知到已知,最終達(dá)到遞歸終止條件。(2)回歸階段:按遞歸終止條件求出結(jié)果,逆向逐步代入遞歸公式,回歸到原問題求解。第六章 自定義數(shù)據(jù)類型1、 什么叫結(jié)構(gòu)體數(shù)據(jù)類型?答:結(jié)構(gòu)體數(shù)據(jù)類型是由若干個數(shù)據(jù)成員組成的構(gòu)造類型,每個成員可以是一個基本的數(shù)據(jù)類型,也可以是一個已經(jīng)定義的構(gòu)造數(shù)據(jù)類型,各個成員占據(jù)不同的存儲空間。2、 什么叫聯(lián)合體數(shù)據(jù)類型?答:聯(lián)合體數(shù)據(jù)類型是一種混合數(shù)據(jù)使用的數(shù)據(jù)類型,它的各個成員雖然是

25、存儲不同數(shù)據(jù)類型的數(shù)據(jù),但使用時改變其一個數(shù)據(jù)成員的數(shù)值將會影響其它數(shù)據(jù)成員的數(shù)值,各個成員共享其占用空間最多的成員所分配的存儲空間。3、 在C+語言中,請說明結(jié)構(gòu)體和聯(lián)合體的異同點。答:結(jié)構(gòu)體數(shù)據(jù)類型的變量可以同時存儲int、long、char和double型等已有數(shù)據(jù)類型的數(shù)據(jù),這些數(shù)據(jù)使用不同的存儲空間,而聯(lián)合體雖然表面上可以存儲int、long、char或double等已有數(shù)據(jù)類型的數(shù)據(jù),但它們共享其占用空間最多的成員所分配的存儲空間,對某個成員賦值將影響其它成員的數(shù)值。4、 結(jié)構(gòu)體數(shù)據(jù)作為參數(shù)在函數(shù)間傳遞有哪幾種方式?請指出它們的異同點。答:結(jié)構(gòu)體作為參數(shù)在函數(shù)之間進(jìn)行傳遞主要有下列

26、三種方式:復(fù)制傳遞方式:把調(diào)用函數(shù)中結(jié)構(gòu)體實參的值復(fù)制給被調(diào)用函數(shù)的形參構(gòu)體地址傳遞方式:將調(diào)用函數(shù)中實參結(jié)構(gòu)體的地址傳遞給被調(diào)用函數(shù)形參的結(jié)構(gòu)體指針。引用方式:被調(diào)用函數(shù)的形參應(yīng)該說明為引用結(jié)構(gòu)體變量形式。實際上,它是為實參結(jié)構(gòu)化起一個別名。另外,還可以通過全局變量的方式在函數(shù)間進(jìn)行數(shù)據(jù)傳遞,但這種方式不好,增加函數(shù)之間的耦合性。地址傳遞方式要比復(fù)制方式效率高。結(jié)構(gòu)體復(fù)制傳遞方式需要對實參做一個備份,它把一個結(jié)構(gòu)體變量作為參數(shù)傳遞,但要將結(jié)構(gòu)體全部成員值一個一個傳遞,費時間又費空間,開銷大。如果結(jié)構(gòu)體的成員較多,則程序運行效率會大大降低,而采用地址傳遞方式將結(jié)構(gòu)體變量的地址作為函數(shù)參數(shù)比較好

27、,能提高運行效率。復(fù)制傳遞方式不影響調(diào)用函數(shù)實參的數(shù)值,而地址傳遞方式有可能影響實參的數(shù)值。第七章 類與對象a) 什么叫面向?qū)ο蟮某绦蛟O(shè)計語言?什么叫類?什么叫對象?什么叫消息?答:在程序設(shè)計語言中,面向?qū)ο笫侵覆捎贸橄?、封裝、繼承、多態(tài)等程序設(shè)計的方法。因此,具有抽象、封裝、繼承、多態(tài)等特性的編程語言稱為面向?qū)ο蟮某绦蛟O(shè)計語言。類實際上是一種抽象的數(shù)據(jù)類型,它將完成某特定功能所用到的數(shù)據(jù)和對數(shù)據(jù)的操作(即函數(shù))封裝在一起。對象是指具有某些屬性和功能的單個個體。消息是對象之間相互請求或相互協(xié)作的途徑,是要求某個對象執(zhí)行其中某個功能操作的規(guī)格說明。2、結(jié)構(gòu)化程序設(shè)計方法存在什么問題?答:結(jié)構(gòu)化程

28、序設(shè)計方法主要存在以下問題:1)軟件重用性差:重用性是指同一軟件不經(jīng)修改或稍加修改就可多次重復(fù)使用的性質(zhì)。軟件重用性是軟件工程追求的目標(biāo)之一。2)軟件可維護(hù)性差:軟件工程強調(diào)軟件的可維護(hù)性,強調(diào)文檔資料的重要性,規(guī)定最終的軟件產(chǎn)品應(yīng)該由完整、一致的配置成分組成。在軟件開發(fā)過程中,始終強調(diào)軟件的可讀性、可修改性和可測試性是軟件的重要的質(zhì)量指標(biāo)。實踐證明,用傳統(tǒng)方法開發(fā)出來的軟件,維護(hù)時其費用和成本仍然很高,其原因是可修改性差,維護(hù)困難,導(dǎo)致可維護(hù)性差。3)開發(fā)出的軟件不能滿足用戶需要:用傳統(tǒng)的結(jié)構(gòu)化方法開發(fā)大型軟件系統(tǒng)涉及各種不同領(lǐng)域的知識,在開發(fā)需求模糊或需求動態(tài)變化的系統(tǒng)時,所開發(fā)出的軟件系

29、統(tǒng)往往不能真正滿足用戶的需要。3、 什么叫抽象?什么叫分類?答:從許多事物中舍棄個別的、非本質(zhì)的特征,抽取共同的、本質(zhì)性的特征,就叫作抽象。抽象是形成概念的必須手段。分類就是把具有相同屬性和服務(wù)的對象劃分為一類,用類作為這些對象的抽象描述。 4、 請簡述結(jié)構(gòu)體、聯(lián)合體和類三種類類型的異同點。答:三種類類型的異同點見下列表格:類型結(jié)構(gòu)體聯(lián)合體類關(guān)鍵字structunionclass訪問權(quán)限缺省數(shù)據(jù)或函數(shù)訪問公有數(shù)據(jù)或函數(shù)訪問公有數(shù)據(jù)或函數(shù)訪問私有成員種類數(shù)據(jù)和函數(shù)數(shù)據(jù)和函數(shù)數(shù)據(jù)和函數(shù)初始化方式可以直接初始化可以直接初始化只能間接初始化struct結(jié)構(gòu)體類型和class類類型都可以封裝數(shù)據(jù)和操作,

30、具有派生性、隱藏性和多態(tài)性。而聯(lián)合體不具有派生性,但具有隱藏性和多態(tài)性。5、 什么叫根類?答:根類是沒有從其它類派生而創(chuàng)建的類類型。實際上,根據(jù)class類類型定義的一般形式,:是一個可缺省的項;如缺省將定義一個根類。6、 類定義通常分為兩部分,主要指什么?答:類的定義一般分為說明部分和實現(xiàn)部分,說明部分放在類定義體內(nèi),用來說明該類中的數(shù)據(jù)成員和函數(shù)成員的類型和名稱,是類的外部接口;實現(xiàn)部分常放在類體外,用以給出說明部分中聲明的成員函數(shù)的定義,是類的內(nèi)部實現(xiàn)。7、 在類定義中,說明成員的訪問權(quán)限的public、private和protected三個關(guān)鍵字的作用是什么?請分別簡述之。答:在類定義

31、體里,使用了private、protected、public三個關(guān)鍵字是用來說明數(shù)據(jù)成員和函數(shù)成員的訪問權(quán)限 ,private說明私有成員,該類成員只能被自己的成員函數(shù)或友元訪問;protected說明保護(hù)型的成員,可以被自己的成員函數(shù)或友元訪問,也可以被派生類的函數(shù)成員訪問;public說明公有成員,該類成員都可以通過對象被訪問的。8、 什么叫內(nèi)聯(lián)函數(shù)?什么叫外聯(lián)函數(shù)?答:將說明部分和成員函數(shù)實現(xiàn)部分合并在類定義體內(nèi),即將該函數(shù)定義為內(nèi)聯(lián)函數(shù)。若該函數(shù)語句行不多且又無循環(huán)語句和開關(guān)語句也可以成為內(nèi)聯(lián)函數(shù),只要在該函數(shù)的類型說明符之前使用關(guān)鍵字inline即可。外聯(lián)函數(shù)是指函數(shù)的說明放在類定義

32、體內(nèi),而函數(shù)的定義是在類定義體外的類成員函數(shù)。9、 簡述構(gòu)造函數(shù)和析構(gòu)函數(shù)的特點。答:構(gòu)造函數(shù)是類的成員函數(shù),函數(shù)體可寫在類定義體內(nèi),也可在類定義體外定義;它是一個特殊的函數(shù),其函數(shù)名與類名相同,該函數(shù)不指定類型說明,它有隱含的返回值,該值由系統(tǒng)內(nèi)部使用;該函數(shù)可以沒有參數(shù),也可以有一個或多個參數(shù),即構(gòu)造函數(shù)可以重載,可以定義具有不同數(shù)據(jù)類型或不同參數(shù)個數(shù)的構(gòu)造函數(shù);另外,程序中不能直接調(diào)用構(gòu)造函數(shù),在創(chuàng)建對象時系統(tǒng)將自動調(diào)用構(gòu)造函數(shù)。析構(gòu)函數(shù)也是類中的成員函數(shù),其定義的函數(shù)體可寫在類定義體內(nèi),也可在類定義體外;它也是一個特殊的函數(shù),它的名字與類名相同,但在其前面要加上“”字符,用來區(qū)別于構(gòu)造

33、函數(shù);析構(gòu)函數(shù)也不指定數(shù)據(jù)類型,并且也沒有形式參數(shù);但一個類中只可以定義一個析構(gòu)函數(shù);析構(gòu)函數(shù)還可以被調(diào)用,也可以被系統(tǒng)自動調(diào)用。10、為什么要用拷貝構(gòu)造函數(shù)?它有哪些特點?答:拷貝構(gòu)造函數(shù)是一種特殊的構(gòu)造函數(shù),它的功能是用一個已有數(shù)值的對象賦值給另一個同類的一個對象??截悩?gòu)造函數(shù)是構(gòu)造函數(shù),但它是在賦值時被調(diào)用,將一個已有數(shù)值的對象的數(shù)據(jù)成員的值拷貝給另一個同類的對象的對應(yīng)數(shù)據(jù)成員??截悩?gòu)造函數(shù)的特點如下:(1) 該函數(shù)名同類名,因為它也是一種構(gòu)造函數(shù),并且該函數(shù)也不被指定返回類型;(2) 該函數(shù)只有一個參數(shù),并且是對同類的某個對象的引用;(3) 每個類都必須有一個拷貝構(gòu)造函數(shù);(4) 在新

34、建對象時,對對象進(jìn)行初始化時調(diào)用,對象之間賦值不調(diào)用。11、簡述深拷貝和淺拷貝。答:如果一個類的數(shù)據(jù)成員需要使用動態(tài)分配的堆資源,并且這個類的對象之間發(fā)生了數(shù)據(jù)成員擁有的堆資源復(fù)制過程的時候,這個過程就可以叫做深拷貝,反之,對象存在數(shù)據(jù)成員擁有堆資源但復(fù)制過程并未實現(xiàn)數(shù)據(jù)成員擁有堆資源的復(fù)制情況視為淺拷貝。12、this指針有什么作用?答:this是專門指向類對象自身的地址常量,是一個隱含式的指針,也就是說使用它時不需要自己去定義就可使用,而是由系統(tǒng)自己設(shè)定的。另外,它也隱含于每一個成員函數(shù)中,也就是說類的每一個成員函數(shù)都有一個this指針,它指向了該函數(shù)所屬類的對象。this是指向?qū)ο笞约旱?/p>

35、指針,* this 就是對象自己。this指針只能在某一個類的函數(shù)體內(nèi)使用,其他地方無意義。該指針指向類的一個實例,實際上,該指針指向當(dāng)前正在操作的應(yīng)用對象自身。 13、簡述類中使用常對象和常成員函數(shù)需要注意的問題。答:使用常對象和常成員函數(shù)需要注意以下問題:(1)常對象在說明時必須進(jìn)行初始化,而且不能被更新。常對象還可以作為類的成員。(2)const是函數(shù)類型的一個組成部分,因此在函數(shù)實現(xiàn)部分也要帶有const關(guān)鍵字;(3)在常成員函數(shù)里不能更改所屬類的數(shù)據(jù)成員,也不能調(diào)用該類中沒有用const修飾的類的成員函數(shù);(4)常對象只能調(diào)用它的常成員函數(shù),而不能調(diào)用其他的成員函數(shù);(5)const

36、關(guān)鍵字可以用于進(jìn)行函數(shù)重載的區(qū)分。其重載的原則是:常對象只能調(diào)用常成員函數(shù),一般對象調(diào)用一般成員函數(shù)。第八章 派生與繼承1、試比較類的三種繼承方式public,protected,private之間的差別。答:不同的繼承方式,導(dǎo)致不同訪問屬性的基類成員在派生類中的訪問屬性也有所不同:公有繼承,使得基類public(公有)和protected(保護(hù))成員的訪問屬性在派生類中不變,而基類private(私有)成員不可訪問。私有繼承,使得基類public(公有)和protected(保護(hù))成員都以private(私有)成員身份出現(xiàn)在派生類中,而基類private(私有)成員不可訪問。保護(hù)繼承中,基類

37、public(公有)和protected(保護(hù))成員都以protected(保護(hù))成員身份出現(xiàn)在派生類中,而基類private(私有)成員不可訪問。2、簡述派生類的構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行次序。答:在派生與繼承的層次結(jié)構(gòu)中,當(dāng)說明一個派生類的對象時,系統(tǒng)先執(zhí)行各個基類的構(gòu)造函數(shù),先對基類成員進(jìn)行初始化,然后再執(zhí)行派生類的構(gòu)造函數(shù);若某一個基類也是派生類,則這種執(zhí)行基類的構(gòu)造函數(shù)的過程需要遞歸進(jìn)行下去。在繼承鏈中,構(gòu)造函數(shù)的執(zhí)行原則是:先執(zhí)行基類的構(gòu)造函數(shù),再執(zhí)行派生類的構(gòu)造函數(shù)。當(dāng)一個派生類的對象使用完畢撤消時,析構(gòu)函數(shù)的執(zhí)行順序正好與構(gòu)造函數(shù)的執(zhí)行順序相反。即:先執(zhí)行派生類的析構(gòu)函數(shù),再執(zhí)行

38、基類的析構(gòu)函數(shù)。3、什么叫做虛基類?有何作用?答:當(dāng)某類的部分或全部直接基類是從另一個基類派生而來,這些直接基類中,從上一級基類繼承來的成員就擁有相同的名稱,派生類的對象的這些同名成員在內(nèi)存中同時擁有多個拷貝,我們可以使用作用域分辨符來唯一標(biāo)識并分別訪問它們。我們也可以將直接基類的共同基類設(shè)置為虛基類,這時從不同的路徑繼承過來的該類成員在內(nèi)存中只擁有一個拷貝,這樣就解決了同名成員的唯一標(biāo)識問題。虛基類的聲明是在派生類的定義過程,其語法格式為:class 派生類名:virtual 繼承方式 基類名上述語句聲明基類為派生類的虛基類,在多繼承情況下,虛基類關(guān)鍵字的作用范圍和繼承方式關(guān)鍵字相同,只對緊

39、跟其后的基類起作用。聲明了虛基類之后,虛基類的成員在進(jìn)一步派生過程中,和派生類一起維護(hù)一個內(nèi)存數(shù)據(jù)拷貝。第九章 友元與靜態(tài)成員1、 什么叫友元?友元有哪些?答:友元指的是一種特性,通過這種特性能夠利用某些特定的全局函數(shù)或類的成員函數(shù)對某類的私有成員進(jìn)行存取。C+語言中的友元分為友元函數(shù)和友元類。2、 請給出友元函數(shù)與友元類的說明方法。答:友元函數(shù)的說明方法:friend () ;友元類的說明方法:friend class ;3、 簡述使用友元的利弊。答:使用友元的益處:在有些情況下,能夠利用某些特定的全局函數(shù)或類的成員函數(shù)對某類的隱藏成員進(jìn)行存取的這種特性是非常方便的,避免了將類中所有成員都設(shè)

40、定為公有成員;使用友元的弊端:雖然聲明友元可以方便的對類的非公有數(shù)據(jù)進(jìn)行訪問,但同時破壞了類的封裝與信息隱藏性,并且難以維護(hù)。4、 試說明使用靜態(tài)成員的目的?靜態(tài)成員跟全局變量相比有哪些優(yōu)點?答:使用靜態(tài)成員的目的:實現(xiàn)數(shù)據(jù)共享。靜態(tài)成員相較于全局變量的優(yōu)點:1)靜態(tài)成員名稱的作用域只限定于定義它的類中,因此避免了與具有相同名稱的其他類的成員或者相同名稱的全局變量發(fā)生命名上的沖突。.2)定義靜態(tài)成員保證了類的封裝性。因為靜態(tài)成員可以被定義成類的私有成員而全局變量卻不能。3)靜態(tài)成員必然是跟程序中特定的類相關(guān)聯(lián)的,這將有利于程序編寫者說明定義這個成員的意圖,而在外部定義的全局變量有時是晦澀難懂的

41、。5、 靜態(tài)數(shù)據(jù)成員是否可以通過對象來對其進(jìn)行訪問?并簡要的給出相應(yīng)的說明。答:可以。因為用對象去引用靜態(tài)成員函數(shù),只是用其類型。6、 所有靜態(tài)數(shù)據(jù)成員的初始化都不能在類的內(nèi)部完成是否正確?如果不正確,請舉出相應(yīng)程序的例子來說明。答:不正確。舉例見程序例9.4。7、 如果靜態(tài)成員函數(shù)訪問了非靜態(tài)數(shù)據(jù)成員會出現(xiàn)怎樣的錯誤并說明原因。答:將提示非法操作,靜態(tài)成員函數(shù)無法訪問非靜態(tài)數(shù)據(jù)成員。由于靜態(tài)成員函數(shù)不與任何類的對象相聯(lián)系,故不能對非靜態(tài)成員進(jìn)行默認(rèn)訪問。第十章 虛擬函數(shù)與多態(tài)性1、在C+中運行時多態(tài)性是通過什么方式來實現(xiàn)的?答:在C+ +語言中,使用重載、模板和虛函數(shù)等概念來支持多態(tài)性。2、函數(shù)重載與虛擬函數(shù)有

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論