復(fù)習(xí)串講(chp2,3,4)_第1頁(yè)
復(fù)習(xí)串講(chp2,3,4)_第2頁(yè)
復(fù)習(xí)串講(chp2,3,4)_第3頁(yè)
復(fù)習(xí)串講(chp2,3,4)_第4頁(yè)
復(fù)習(xí)串講(chp2,3,4)_第5頁(yè)
已閱讀5頁(yè),還剩49頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第二章第二章 從結(jié)構(gòu)到類的演變從結(jié)構(gòu)到類的演變一、結(jié)構(gòu)的演化一、結(jié)構(gòu)的演化C+中允許結(jié)構(gòu)中定義函數(shù),這些函數(shù)稱為中允許結(jié)構(gòu)中定義函數(shù),這些函數(shù)稱為 。成員函數(shù)成員函數(shù)1、在結(jié)構(gòu)中,沒(méi)有使用、在結(jié)構(gòu)中,沒(méi)有使用private定義的成員,默認(rèn)定義的成員,默認(rèn)為為 。public2、私有的數(shù)據(jù)成員,必須通過(guò)公有的成員函數(shù)才能使用,、私有的數(shù)據(jù)成員,必須通過(guò)公有的成員函數(shù)才能使用,這稱為數(shù)據(jù)的這稱為數(shù)據(jù)的 性。性。封裝封裝3、與結(jié)構(gòu)不同的是,類使用、與結(jié)構(gòu)不同的是,類使用 關(guān)鍵字來(lái)定義,關(guān)鍵字來(lái)定義,其成員默認(rèn)的性質(zhì)是其成員默認(rèn)的性質(zhì)是 。而結(jié)構(gòu)使用。而結(jié)構(gòu)使用 關(guān)關(guān)鍵字來(lái)定義,其成員默認(rèn)的性質(zhì)是鍵字

2、來(lái)定義,其成員默認(rèn)的性質(zhì)是 。privateclasspubicstrcut4、私有的數(shù)據(jù)成員必須通過(guò)公有的成員函數(shù)才能使用,、私有的數(shù)據(jù)成員必須通過(guò)公有的成員函數(shù)才能使用,這就稱為數(shù)據(jù)的這就稱為數(shù)據(jù)的 性。性。封裝封裝5、使用關(guān)鍵字、使用關(guān)鍵字 代替代替struct,就是一個(gè)標(biāo)準(zhǔn)的類。,就是一個(gè)標(biāo)準(zhǔn)的類。class 和傳統(tǒng)的程序設(shè)計(jì)方法相比,面向?qū)ο蟮某绦蛟O(shè)計(jì)具有和傳統(tǒng)的程序設(shè)計(jì)方法相比,面向?qū)ο蟮某绦蛟O(shè)計(jì)具有 、 、 和和 等關(guān)鍵要素。等關(guān)鍵要素。 C+中對(duì)象是描述客觀事物的一個(gè)實(shí)體,是中對(duì)象是描述客觀事物的一個(gè)實(shí)體,是構(gòu)成系構(gòu)成系統(tǒng)的基本單位統(tǒng)的基本單位??梢允褂谩?梢允褂?、 和和 三

3、三要素來(lái)描述一個(gè)對(duì)象。要素來(lái)描述一個(gè)對(duì)象。 二、面向?qū)ο蟪绦蛟O(shè)計(jì)的特點(diǎn)二、面向?qū)ο蟪绦蛟O(shè)計(jì)的特點(diǎn)抽象抽象封裝封裝集成集成多態(tài)性多態(tài)性對(duì)象名對(duì)象名屬性屬性操作操作三、三、string類類1、2、會(huì)定義、會(huì)定義string類的對(duì)象類的對(duì)象 string 對(duì)象名對(duì)象名3、定義的同時(shí)初始化、定義的同時(shí)初始化格式:格式:string 對(duì)象名(初始值)對(duì)象名(初始值) string 對(duì)象名對(duì)象名=初始值初始值hw4、string類常用的幾個(gè)成員函數(shù)類常用的幾個(gè)成員函數(shù)1) size() :求對(duì)象的長(zhǎng)度。求對(duì)象的長(zhǎng)度。2) substr() :求字符串的子串求字符串的子串 格式:格式:substr(int

4、start,int length) 功能:從功能:從start位置開(kāi)始,截取位置開(kāi)始,截取length個(gè)長(zhǎng)度的字符串。個(gè)長(zhǎng)度的字符串。3) find( ) :字符串檢索字符串檢索 格式:格式:find( 要查找的字符串,開(kāi)始查找的位置要查找的字符串,開(kāi)始查找的位置) 功能:從指定位置開(kāi)始查找所需的字符串,如果找到了,功能:從指定位置開(kāi)始查找所需的字符串,如果找到了,則返回字符串在主串中的位置,如果沒(méi)有沒(méi)到則則返回字符串在主串中的位置,如果沒(méi)有沒(méi)到則 返回返回 。-14、+:將前后兩個(gè):將前后兩個(gè)5、begin():指示第一個(gè)元素位置:指示第一個(gè)元素位置 end():指示最后一個(gè)元素:指示最后一

5、個(gè)元素之后之后的位置的位置四、四、complex類類1、2、會(huì)定義、會(huì)定義complex類的對(duì)象類的對(duì)象 complex 對(duì)象名(實(shí)部,虛部)對(duì)象名(實(shí)部,虛部)例如:例如:complex x(2,3)complex x(2.5,3.6)兩個(gè)成員函數(shù)兩個(gè)成員函數(shù) 和和 分別用來(lái)輸出對(duì)象的分別用來(lái)輸出對(duì)象的實(shí)部和虛部。實(shí)部和虛部。real()imag()1 1在在C+C+中,封裝是借助什么達(dá)到的?(中,封裝是借助什么達(dá)到的?( )A A結(jié)構(gòu)結(jié)構(gòu) B B類類 C C數(shù)組數(shù)組 D D函數(shù)函數(shù)2.2.假定假定AAAA為一個(gè)類,為一個(gè)類,a()a()為該類公有的函數(shù)成員,為該類公有的函數(shù)成員,x x為該

6、類的一個(gè)對(duì)象,則訪問(wèn)為該類的一個(gè)對(duì)象,則訪問(wèn)x x對(duì)象中函數(shù)成員對(duì)象中函數(shù)成員a()a()的的格式為(格式為( )A.x.a BA.x.a Bx.a() Cx.a() Cx-a Dx-a Dx-a()x-a()3 3對(duì)象的四大基本特性是多態(tài)性、繼承性、對(duì)象的四大基本特性是多態(tài)性、繼承性、_和封裝性。和封裝性。抽象性抽象性B BB B練習(xí)練習(xí)4 4為了使類中的成員不能被類外的函數(shù)通過(guò)成員操為了使類中的成員不能被類外的函數(shù)通過(guò)成員操作符訪問(wèn),則應(yīng)把該成員的訪問(wèn)權(quán)限定義為作符訪問(wèn),則應(yīng)把該成員的訪問(wèn)權(quán)限定義為_(kāi)。private5.C+5.C+允許在結(jié)構(gòu)中定義函數(shù),這些函數(shù)稱為(允許在結(jié)構(gòu)中定義函數(shù),

7、這些函數(shù)稱為( )A.A.靜態(tài)函數(shù)靜態(tài)函數(shù) B.B.構(gòu)造函數(shù)構(gòu)造函數(shù) C.C.析構(gòu)函數(shù)析構(gòu)函數(shù) D.D.成員函數(shù)成員函數(shù)D.6.C+6.C+類中定義的成員默認(rèn)訪問(wèn)屬性為類中定義的成員默認(rèn)訪問(wèn)屬性為( ( ) ) A.publicA.public B.private B.private C.protectedC.protected D.friend D.friend B7.使用string.h庫(kù)操縱字符串時(shí),將兩個(gè)字符串連接成一個(gè)字符串的函數(shù)是( ) A.strlen() B.strcpy() C.strcat() D.strcmp() 8.在C+標(biāo)準(zhǔn)庫(kù)中,用_類來(lái)表示復(fù)數(shù)。 9.能提供封裝的C

8、+關(guān)鍵字是_。 Ccomplexprivate11在使用在使用string類的類的find成員函數(shù)來(lái)檢索主串中成員函數(shù)來(lái)檢索主串中是否含有指定的子串時(shí),若在主串中不含指定的子串,是否含有指定的子串時(shí),若在主串中不含指定的子串,find函數(shù)的返回值是函數(shù)的返回值是_。-112.使用使用string類建立對(duì)象的不正確方式是(類建立對(duì)象的不正確方式是( ) A. string str(“OK”) B. string str=“OK” C. string str; D.string str=OKD第三章第三章 函數(shù)和函數(shù)模板函數(shù)和函數(shù)模板 一、函數(shù)的參數(shù)及其傳遞方式一、函數(shù)的參數(shù)及其傳遞方式C+的函數(shù)

9、參數(shù)有兩種傳遞方式:的函數(shù)參數(shù)有兩種傳遞方式: 和和 。傳值傳值傳引用傳引用對(duì)象作函數(shù)參數(shù),是將實(shí)參對(duì)象的對(duì)象作函數(shù)參數(shù),是將實(shí)參對(duì)象的 傳遞給形參對(duì)象,傳遞給形參對(duì)象,形參擁有的實(shí)參的備份。這種傳遞是形參擁有的實(shí)參的備份。這種傳遞是 的。的。值值單向單向1、直接使用基本數(shù)據(jù)類型的對(duì)象,或使用類和結(jié)構(gòu)的、直接使用基本數(shù)據(jù)類型的對(duì)象,或使用類和結(jié)構(gòu)的對(duì)象作為參數(shù),均是對(duì)象作為參數(shù),均是 方式。方式。傳值傳值2、將指向?qū)ο蟮闹羔樧鳛楹瘮?shù)參數(shù),形參是對(duì)象指針,、將指向?qū)ο蟮闹羔樧鳛楹瘮?shù)參數(shù),形參是對(duì)象指針,實(shí)參可以是對(duì)象的地址或者指向?qū)ο蟮闹羔?。?shí)參可以是對(duì)象的地址或者指向?qū)ο蟮闹羔槨?、引用做函數(shù)

10、參數(shù),實(shí)參是對(duì)象名稱,實(shí)參是引用。、引用做函數(shù)參數(shù),實(shí)參是對(duì)象名稱,實(shí)參是引用。在函數(shù)調(diào)用時(shí),實(shí)參對(duì)象名傳給形參對(duì)象名,形參對(duì)象在函數(shù)調(diào)用時(shí),實(shí)參對(duì)象名傳給形參對(duì)象名,形參對(duì)象名就成為實(shí)參的別名。實(shí)參和形參是同一個(gè)對(duì)象,所以名就成為實(shí)參的別名。實(shí)參和形參是同一個(gè)對(duì)象,所以改變形參對(duì)象的值就是改變實(shí)參對(duì)象的值。改變形參對(duì)象的值就是改變實(shí)參對(duì)象的值。練習(xí):練習(xí):1.已知函數(shù)已知函數(shù) f 的原型是的原型是 void f(int *a, long & b);,變量;,變量 v1、v2 的定義是:的定義是:int v1;long v2;下列調(diào)用語(yǔ)句中正確的是(下列調(diào)用語(yǔ)句中正確的是( )A)f(

11、v1, &v2); B)f(v1, v2); C)f(&v1, &v2); D)f(&v1, v2);D2.將指向?qū)ο蟮闹羔樧鳛楹瘮?shù)參數(shù),形參是對(duì)象指針,將指向?qū)ο蟮闹羔樧鳛楹瘮?shù)參數(shù),形參是對(duì)象指針,實(shí)參是對(duì)象的實(shí)參是對(duì)象的 。地址值地址值二、二、c+中定義函數(shù)時(shí)可以使用默認(rèn)參數(shù),而且默認(rèn)參中定義函數(shù)時(shí)可以使用默認(rèn)參數(shù),而且默認(rèn)參數(shù)可以多于數(shù)可以多于1個(gè),但必須放在參數(shù)序列的個(gè),但必須放在參數(shù)序列的 部。部。后后在調(diào)用函數(shù)默認(rèn)參數(shù)的函數(shù)時(shí),如果需要給一個(gè)默認(rèn)參在調(diào)用函數(shù)默認(rèn)參數(shù)的函數(shù)時(shí),如果需要給一個(gè)默認(rèn)參數(shù)指定一個(gè)特定值,則在其之?dāng)?shù)指定一個(gè)特定值,則在其之 的

12、所有參數(shù)都的所有參數(shù)都 必須賦必須賦值。值。前前1在函數(shù)調(diào)用時(shí),如某一默認(rèn)參數(shù)要指明一個(gè)特定值,在函數(shù)調(diào)用時(shí),如某一默認(rèn)參數(shù)要指明一個(gè)特定值,則有(則有( )(2008.10)A其之前所有參數(shù)都必須賦值其之前所有參數(shù)都必須賦值B其之后所有參數(shù)都必須賦值其之后所有參數(shù)都必須賦值C其前、后所有參數(shù)都必須賦值其前、后所有參數(shù)都必須賦值D其前、后所有參數(shù)都不必賦值其前、后所有參數(shù)都不必賦值2.函數(shù)默認(rèn)參數(shù)在函數(shù)原型中說(shuō)明,默認(rèn)參數(shù)必須放在參函數(shù)默認(rèn)參數(shù)在函數(shù)原型中說(shuō)明,默認(rèn)參數(shù)必須放在參數(shù)序列的數(shù)序列的( )(2009.1)A.前部前部 B.中部中部 C.后部后部 D.兩端兩端AC3.下列關(guān)于函數(shù)參數(shù)

13、默認(rèn)值的描述中,正確的是()下列關(guān)于函數(shù)參數(shù)默認(rèn)值的描述中,正確的是()A函數(shù)參數(shù)的默認(rèn)值只能設(shè)置一個(gè)函數(shù)參數(shù)的默認(rèn)值只能設(shè)置一個(gè)B若一個(gè)函數(shù)含有多個(gè)參數(shù),其中一個(gè)參數(shù)設(shè)置若一個(gè)函數(shù)含有多個(gè)參數(shù),其中一個(gè)參數(shù)設(shè)置成默認(rèn)值后,其后所有參數(shù)都必須設(shè)置默認(rèn)值成默認(rèn)值后,其后所有參數(shù)都必須設(shè)置默認(rèn)值C若一個(gè)函數(shù)含有多個(gè)參數(shù),則設(shè)置默認(rèn)參數(shù)時(shí)若一個(gè)函數(shù)含有多個(gè)參數(shù),則設(shè)置默認(rèn)參數(shù)時(shí) 可以不連續(xù)設(shè)置默認(rèn)值可以不連續(xù)設(shè)置默認(rèn)值 DC+語(yǔ)言中函數(shù)都必須設(shè)有默認(rèn)值語(yǔ)言中函數(shù)都必須設(shè)有默認(rèn)值B4.下面函數(shù)聲明錯(cuò)誤的是(下面函數(shù)聲明錯(cuò)誤的是( )A.void fun( int x, int y=0); B.B. i

14、nt f1( float i=0, char c=a) ;C. float *f( float, float) ; D. double abc( int a=0, int b); D三、如果不希望在函數(shù)中改變形參的值,則可以使用三、如果不希望在函數(shù)中改變形參的值,則可以使用 關(guān)鍵字來(lái)保護(hù)形參。關(guān)鍵字來(lái)保護(hù)形參。const例題:例題: 1)找出下面程序段中的錯(cuò)誤找出下面程序段中的錯(cuò)誤 int fun( int x, const int y) int z ; y+ ; z=x+y ; return z ; 形參形參y使用使用const修修飾,只能被使用不飾,只能被使用不能改變能改變2)不允許改變函

15、數(shù)參數(shù)的函數(shù)原型聲明是()不允許改變函數(shù)參數(shù)的函數(shù)原型聲明是( )A.String input(const int); B.string input(int &)C.String *input(int *) D.string input(string &)A四、函數(shù)的返回值可以是除了四、函數(shù)的返回值可以是除了 和和 以外的任何以外的任何類型。(類型。(2009.10)數(shù)組數(shù)組函數(shù)函數(shù)練習(xí):練習(xí):1)函數(shù)聲明)函數(shù)聲明 int &f1(float , int); 的含義是的含義是 :定義函數(shù)定義函數(shù)f1,含有兩個(gè)形參,一個(gè)為單精度實(shí)型,另,含有兩個(gè)形參,一個(gè)為單精度實(shí)型,

16、另一個(gè)為基本整型,返回一個(gè)整型的引用一個(gè)為基本整型,返回一個(gè)整型的引用 2)函數(shù))函數(shù) compute的的 返回值是一個(gè)單精度實(shí)型引用,含返回值是一個(gè)單精度實(shí)型引用,含有三個(gè)參數(shù),前兩個(gè)為整型,第三個(gè)為單精度實(shí)型,則聲有三個(gè)參數(shù),前兩個(gè)為整型,第三個(gè)為單精度實(shí)型,則聲明此函數(shù)的原型為:明此函數(shù)的原型為:float &compute(int, int,float);); 3)函數(shù))函數(shù)f2返回一個(gè)指向整型數(shù)據(jù)的指針,含兩個(gè)參數(shù),返回一個(gè)指向整型數(shù)據(jù)的指針,含兩個(gè)參數(shù),一個(gè)是字符型,另一個(gè)為一個(gè)是字符型,另一個(gè)為int類型的引用,聲明此函數(shù)類型的引用,聲明此函數(shù)的原型為:的原型為:int

17、*f2(char,int &););五、如果程序中多次調(diào)用某個(gè)函數(shù),而該函數(shù)的功能比五、如果程序中多次調(diào)用某個(gè)函數(shù),而該函數(shù)的功能比較簡(jiǎn)單、函數(shù)體比較短小,為了提高效率,通常將該函較簡(jiǎn)單、函數(shù)體比較短小,為了提高效率,通常將該函數(shù)說(shuō)明為數(shù)說(shuō)明為 函數(shù)。函數(shù)。內(nèi)聯(lián)內(nèi)聯(lián)說(shuō)明方式:在函數(shù)定義前加說(shuō)明方式:在函數(shù)定義前加 關(guān)鍵字關(guān)鍵字inlineC+中函數(shù)體內(nèi)含有中函數(shù)體內(nèi)含有 語(yǔ)句和語(yǔ)句和 語(yǔ)句的函數(shù)不語(yǔ)句的函數(shù)不能說(shuō)明為內(nèi)聯(lián)函數(shù)。能說(shuō)明為內(nèi)聯(lián)函數(shù)。循環(huán)循環(huán)switch 練習(xí)練習(xí)1)1.一個(gè)函數(shù)功能不太復(fù)雜,但要求被頻繁調(diào)用,選用(一個(gè)函數(shù)功能不太復(fù)雜,但要求被頻繁調(diào)用,選用( )A.內(nèi)聯(lián)函

18、數(shù)內(nèi)聯(lián)函數(shù) B重載函數(shù)重載函數(shù) C遞歸函數(shù)遞歸函數(shù) D嵌套函數(shù)嵌套函數(shù)內(nèi)內(nèi)2 2下列哪個(gè)類型函數(shù)不適合聲明為內(nèi)聯(lián)函數(shù)(下列哪個(gè)類型函數(shù)不適合聲明為內(nèi)聯(lián)函數(shù)( )A A函數(shù)體語(yǔ)句較多函數(shù)體語(yǔ)句較多 B B函數(shù)體語(yǔ)句較少函數(shù)體語(yǔ)句較少 C C函數(shù)執(zhí)行時(shí)間較短函數(shù)執(zhí)行時(shí)間較短 D D函數(shù)執(zhí)行時(shí)間過(guò)長(zhǎng)函數(shù)執(zhí)行時(shí)間過(guò)長(zhǎng)AA3.包含哪種語(yǔ)句的函數(shù)不能聲明為內(nèi)聯(lián)函數(shù)(包含哪種語(yǔ)句的函數(shù)不能聲明為內(nèi)聯(lián)函數(shù)( )A.循環(huán)循環(huán)B.變量自增自減變量自增自減C.if.elseD.變量聲明變量聲明A4.內(nèi)內(nèi)聯(lián)函數(shù)的特點(diǎn)是聯(lián)函數(shù)的特點(diǎn)是( )A.減少代碼量,加快訪問(wèn)速度減少代碼量,加快訪問(wèn)速度 B.減少代碼量,減緩訪問(wèn)速

19、度減少代碼量,減緩訪問(wèn)速度C.增加代碼量,減緩訪問(wèn)速度增加代碼量,減緩訪問(wèn)速度 D.增加代碼量,加快訪問(wèn)速度增加代碼量,加快訪問(wèn)速度D六、六、 可以使一個(gè)函數(shù)名具有多種功能,即具有多種可以使一個(gè)函數(shù)名具有多種功能,即具有多種形態(tài),稱這種特性為形態(tài),稱這種特性為 。多態(tài)性多態(tài)性函數(shù)重載函數(shù)重載當(dāng)函數(shù)的參數(shù)當(dāng)函數(shù)的參數(shù) 不同,或者參數(shù)不同,或者參數(shù) 不同時(shí),函數(shù)不同時(shí),函數(shù)可以重載。僅有函數(shù)返回值不同可以重載。僅有函數(shù)返回值不同 區(qū)分重載函數(shù)。區(qū)分重載函數(shù)。類型類型個(gè)數(shù)個(gè)數(shù)不能不能1.下列關(guān)于函數(shù)的重載說(shuō)法正確的是下列關(guān)于函數(shù)的重載說(shuō)法正確的是( )(A)重載函數(shù)必須具有不同的返回值類型重載函數(shù)必

20、須具有不同的返回值類型(B)重載函數(shù)形參個(gè)數(shù)必須不同重載函數(shù)形參個(gè)數(shù)必須不同(C)重載函數(shù)必須具有不同的形參列表重載函數(shù)必須具有不同的形參列表(D)重載函數(shù)名可以不同重載函數(shù)名可以不同C2int Func(int,int);不可與下列哪個(gè)函數(shù)構(gòu)成重載;不可與下列哪個(gè)函數(shù)構(gòu)成重載( )(2008.10)Aint Func(int,int,int);Bdouble Func(int,int);Cdouble Func(double,double);Ddouble Func(int,double);B七、七、函數(shù)模板函數(shù)模板模版以模版以 關(guān)鍵字和一個(gè)形參表開(kāi)頭。關(guān)鍵字和一個(gè)形參表開(kāi)頭。templat

21、e“類型形參表類型形參表”可以包含基本可以包含基本數(shù)據(jù)類型,也可以包含類類型。數(shù)據(jù)類型,也可以包含類類型。類型形參需要加前綴類型形參需要加前綴 或者或者 。classtypename一般格式:一般格式:template 類型形參表類型形參表返回類型返回類型 函數(shù)名(形參表)函數(shù)名(形參表) 函數(shù)體函數(shù)體調(diào)用函數(shù)模板時(shí),函數(shù)模板的參數(shù)可以顯式地給出,也調(diào)用函數(shù)模板時(shí),函數(shù)模板的參數(shù)可以顯式地給出,也可以采用系統(tǒng)默認(rèn)方式,前提條件是由這個(gè)調(diào)用的函數(shù)可以采用系統(tǒng)默認(rèn)方式,前提條件是由這個(gè)調(diào)用的函數(shù)參數(shù)表能夠唯一地標(biāo)識(shí)出模板參數(shù)的一個(gè)集合。參數(shù)表能夠唯一地標(biāo)識(shí)出模板參數(shù)的一個(gè)集合。使用格式:使用格式:

22、模板函數(shù)名模板函數(shù)名 (實(shí)參表實(shí)參表)或者:或者:模板函數(shù)名模板函數(shù)名 (實(shí)參表實(shí)參表)顯式比較準(zhǔn)則顯式比較準(zhǔn)則默認(rèn)方式默認(rèn)方式如有函數(shù)模板如下:如有函數(shù)模板如下:template T max(T a,T b)if(ab) return a;else return b;max(3,8);max(3.6,12.5);max(a,A);max(3,8);max(3.6,12.5);max(a,A);max(97,A); max(97,int(A);判斷下列函數(shù)模板的使用正確與否:判斷下列函數(shù)模板的使用正確與否:X例題:例題: 給出下面程序的輸出結(jié)果給出下面程序的輸出結(jié)果 #include usin

23、g namespace std; template T add(T x,T y) return x+y ; void main( ) coutadd(1,7) tadd(2.0,5.0)endl; 87例題例題.1)在下劃線處填上缺少的部分。源程序如下在下劃線處填上缺少的部分。源程序如下(2009.1) #include using namespace std;_ T fun(T x) _y; y=x*x-T(5); return y; void main() float a=2; coutfun(a); template T2)找出下面程序中的錯(cuò)誤:找出下面程序中的錯(cuò)誤:#include t

24、emplateType max( T x, y )return xy?x:y;Type max( Type x, Type y )3)下列程序的運(yùn)行結(jié)果如下下列程序的運(yùn)行結(jié)果如下(2010.1 第第50題)題) x=22,y=22 根據(jù)結(jié)果將程序補(bǔ)充完整。根據(jù)結(jié)果將程序補(bǔ)充完整。#include template void f( T1 & x,T2 & y )if(sizeof(T1)sizeof(T2) x=(T1)y;else y=(T2)x;void main()double x=134.2;int y=22;f(x,y);coutx=x,y=.-4)成員函數(shù)在類體外定義

25、時(shí),須加上類名限定:)成員函數(shù)在類體外定義時(shí),須加上類名限定: 類名類名:函數(shù)類型函數(shù)類型 函數(shù)名(參數(shù))函數(shù)名(參數(shù)) /函數(shù)體函數(shù)體 二、二、c+中可以自動(dòng)進(jìn)行對(duì)象初始化的函數(shù)中可以自動(dòng)進(jìn)行對(duì)象初始化的函數(shù) 函數(shù)。函數(shù)。構(gòu)造構(gòu)造2、當(dāng)沒(méi)有為一個(gè)類定義任何構(gòu)造函數(shù)的情況下,、當(dāng)沒(méi)有為一個(gè)類定義任何構(gòu)造函數(shù)的情況下,c+編譯編譯器總要自動(dòng)建立一個(gè)不帶參數(shù)的構(gòu)造函數(shù)。器總要自動(dòng)建立一個(gè)不帶參數(shù)的構(gòu)造函數(shù)。如有一個(gè)類如有一個(gè)類Person,則其默認(rèn)函數(shù)形式為:,則其默認(rèn)函數(shù)形式為:Person()()3、一旦程序員定義了自己的構(gòu)造函數(shù),系統(tǒng)就不再提供默、一旦程序員定義了自己的構(gòu)造函數(shù),系統(tǒng)就不再提

26、供默認(rèn)構(gòu)造函數(shù)。認(rèn)構(gòu)造函數(shù)。1、構(gòu)造函數(shù)名稱與、構(gòu)造函數(shù)名稱與 同名,而且同名,而且 返回值。返回值。類類沒(méi)有沒(méi)有4、用、用new運(yùn)算符產(chǎn)生對(duì)象時(shí),運(yùn)算符產(chǎn)生對(duì)象時(shí),new和和 一起作用。一起作用。構(gòu)造函數(shù)構(gòu)造函數(shù)用用new建立的動(dòng)態(tài)對(duì)象只能用建立的動(dòng)態(tài)對(duì)象只能用 刪除刪除,以便釋放所占空間。以便釋放所占空間。delete5、一個(gè)類可以有、一個(gè)類可以有 個(gè)構(gòu)造函數(shù);個(gè)構(gòu)造函數(shù);多多如果一個(gè)類有多個(gè)構(gòu)造函數(shù),由于它們?nèi)绻粋€(gè)類有多個(gè)構(gòu)造函數(shù),由于它們 相同但是相同但是 不不同,所以它們之間是一種同,所以它們之間是一種 關(guān)系。關(guān)系。名稱名稱參數(shù)參數(shù)重載重載6、對(duì)象定義時(shí),構(gòu)造函數(shù)被自動(dòng)調(diào)用,根據(jù)對(duì)

27、象定義形式調(diào)、對(duì)象定義時(shí),構(gòu)造函數(shù)被自動(dòng)調(diào)用,根據(jù)對(duì)象定義形式調(diào)用不同的構(gòu)造函數(shù)。定義對(duì)象未初始化時(shí),則調(diào)用用不同的構(gòu)造函數(shù)。定義對(duì)象未初始化時(shí),則調(diào)用 構(gòu)造構(gòu)造函數(shù),定義對(duì)象并初始化時(shí),調(diào)用函數(shù),定義對(duì)象并初始化時(shí),調(diào)用 構(gòu)造函數(shù)。(填寫構(gòu)造函數(shù)。(填寫“無(wú)參無(wú)參”或者或者“有參有參”) 無(wú)參無(wú)參有參有參三、在使用一個(gè)類的對(duì)象初始化另一個(gè)對(duì)象時(shí),調(diào)用該類的三、在使用一個(gè)類的對(duì)象初始化另一個(gè)對(duì)象時(shí),調(diào)用該類的 函數(shù)。函數(shù)。復(fù)制復(fù)制(拷貝拷貝)構(gòu)造構(gòu)造賦值構(gòu)造函數(shù)必須使用賦值構(gòu)造函數(shù)必須使用 作為形式參數(shù)。作為形式參數(shù)。對(duì)象的引用對(duì)象的引用如果一個(gè)類的名字為如果一個(gè)類的名字為fun,則其賦值構(gòu)造

28、函數(shù)的原型可以聲,則其賦值構(gòu)造函數(shù)的原型可以聲明為以下兩種形式:明為以下兩種形式: 或者或者 。fun(fun &);fun(const fun &);賦值構(gòu)造函數(shù)在以下賦值構(gòu)造函數(shù)在以下3種情況下被自動(dòng)調(diào)用:種情況下被自動(dòng)調(diào)用:1)當(dāng)用一個(gè)類的對(duì)象去初始化另一個(gè)對(duì)象時(shí);當(dāng)用一個(gè)類的對(duì)象去初始化另一個(gè)對(duì)象時(shí);2)對(duì)象做函數(shù)參數(shù),進(jìn)行實(shí)參和形參結(jié)合時(shí);對(duì)象做函數(shù)參數(shù),進(jìn)行實(shí)參和形參結(jié)合時(shí);3)當(dāng)函數(shù)的返回值是對(duì)象時(shí)。當(dāng)函數(shù)的返回值是對(duì)象時(shí)。四、當(dāng)一個(gè)對(duì)象的生存期結(jié)束時(shí),系統(tǒng)會(huì)自動(dòng)調(diào)用四、當(dāng)一個(gè)對(duì)象的生存期結(jié)束時(shí),系統(tǒng)會(huì)自動(dòng)調(diào)用 函函數(shù)來(lái)釋放對(duì)象所占的內(nèi)存。數(shù)來(lái)釋放對(duì)象所占的內(nèi)存。

29、另外,如果一個(gè)類在構(gòu)造函數(shù)中使用另外,如果一個(gè)類在構(gòu)造函數(shù)中使用new運(yùn)算符動(dòng)態(tài)申請(qǐng)了運(yùn)算符動(dòng)態(tài)申請(qǐng)了內(nèi)存,當(dāng)改類的對(duì)象消失時(shí),也應(yīng)使用內(nèi)存,當(dāng)改類的對(duì)象消失時(shí),也應(yīng)使用 函數(shù)來(lái)釋放由函數(shù)來(lái)釋放由構(gòu)造函數(shù)分配的內(nèi)存。構(gòu)造函數(shù)分配的內(nèi)存。析構(gòu)析構(gòu)析構(gòu)析構(gòu)1、析構(gòu)函數(shù)沒(méi)有參數(shù),沒(méi)有返回值,對(duì)象內(nèi)存被釋放時(shí)自動(dòng)、析構(gòu)函數(shù)沒(méi)有參數(shù),沒(méi)有返回值,對(duì)象內(nèi)存被釋放時(shí)自動(dòng)調(diào)用。若有一個(gè)類調(diào)用。若有一個(gè)類fun,寫出該類的默認(rèn)析構(gòu)函數(shù):,寫出該類的默認(rèn)析構(gòu)函數(shù): 或者或者 。2、一個(gè)類中只能定義、一個(gè)類中只能定義 析構(gòu)函數(shù),析構(gòu)函數(shù),一個(gè)一個(gè)fun()fun(void)3、當(dāng)用、當(dāng)用delete刪除動(dòng)態(tài)對(duì)象時(shí),

30、系統(tǒng)會(huì)自動(dòng)調(diào)用刪除動(dòng)態(tài)對(duì)象時(shí),系統(tǒng)會(huì)自動(dòng)調(diào)用 函數(shù)。函數(shù)。析構(gòu)析構(gòu)五、五、c+規(guī)定,當(dāng)一個(gè)成員函數(shù)被調(diào)用時(shí),系統(tǒng)會(huì)自動(dòng)向它規(guī)定,當(dāng)一個(gè)成員函數(shù)被調(diào)用時(shí),系統(tǒng)會(huì)自動(dòng)向它傳遞一個(gè)隱含的參數(shù),該參數(shù)是一個(gè)指向調(diào)用該函數(shù)的對(duì)象傳遞一個(gè)隱含的參數(shù),該參數(shù)是一個(gè)指向調(diào)用該函數(shù)的對(duì)象的指針,稱為的指針,稱為 指針。指針。this this指針是一個(gè)指向?qū)ο蟮闹羔?,假設(shè)指針是一個(gè)指向?qū)ο蟮闹羔?,假設(shè)a是是A類的對(duì)象,類的對(duì)象,f是是A的成員函數(shù),則調(diào)用的成員函數(shù),則調(diào)用 a.f()時(shí),時(shí),f函數(shù)內(nèi)的函數(shù)內(nèi)的this指針是指向指針是指向?qū)ο髮?duì)象a的指針。該指針由系統(tǒng)自動(dòng)產(chǎn)生(隱含方式)。的指針。該指針由系統(tǒng)自動(dòng)

31、產(chǎn)生(隱含方式)。This指針是指針是C+實(shí)現(xiàn)封裝的一種方式。實(shí)現(xiàn)封裝的一種方式。六、一個(gè)類的對(duì)象可作為另一個(gè)類的數(shù)據(jù)成員六、一個(gè)類的對(duì)象可作為另一個(gè)類的數(shù)據(jù)成員 如:如:class A;class B A x; ;七、類和對(duì)象的性質(zhì)(略)七、類和對(duì)象的性質(zhì)(略)八、對(duì)象的結(jié)構(gòu)與連接八、對(duì)象的結(jié)構(gòu)與連接1、對(duì)象間的靜態(tài)關(guān)系通過(guò)對(duì)象屬性之間的連接反映的,稱、對(duì)象間的靜態(tài)關(guān)系通過(guò)對(duì)象屬性之間的連接反映的,稱為為 。 實(shí)例連接實(shí)例連接 對(duì)象行為之間的動(dòng)態(tài)關(guān)系是通過(guò)對(duì)象行為之間的依賴對(duì)象行為之間的動(dòng)態(tài)關(guān)系是通過(guò)對(duì)象行為之間的依賴關(guān)系表現(xiàn)的,稱之為關(guān)系表現(xiàn)的,稱之為 。消息連接和實(shí)例連接統(tǒng)稱為連接消息連

32、接和實(shí)例連接統(tǒng)稱為連接消息連接消息連接2、對(duì)象傳遞的消息一般由、對(duì)象傳遞的消息一般由3部分組成:部分組成: 、 和和 。接收對(duì)象名接收對(duì)象名調(diào)用操作名調(diào)用操作名必要的參數(shù)必要的參數(shù)九、編譯指令九、編譯指令1、 指令指示編譯器將一個(gè)源文件嵌入到帶有該指令指示編譯器將一個(gè)源文件嵌入到帶有該指令的源文件中。指令的源文件中。#include2、 指令可以定義標(biāo)識(shí)符及串,在源程序中每次指令可以定義標(biāo)識(shí)符及串,在源程序中每次遇到該標(biāo)識(shí)符時(shí),編譯器均用定義的串代替之。遇到該標(biāo)識(shí)符時(shí),編譯器均用定義的串代替之。#define在程序的一個(gè)地方定義的宏名,如果不想使其影響到程序在程序的一個(gè)地方定義的宏名,如果不想

33、使其影響到程序的其他部分,可以在不再使用時(shí)用的其他部分,可以在不再使用時(shí)用 刪除。刪除。#undef條件編譯指令有條件編譯指令有#if、 、#elif和和 。#else#endif練習(xí):練習(xí):1)在編譯指令中,宏定義使用哪個(gè)指令在編譯指令中,宏定義使用哪個(gè)指令( ) (2008.10)A. #include B.#define C.if D.#else2) 指令指示編譯器將一個(gè)源文件嵌入到帶該指令指示編譯器將一個(gè)源文件嵌入到帶該指令的源文件之中。(指令的源文件之中。(2008.10)#includeB1.UML1.UML中對(duì)象之間的靜態(tài)關(guān)系是通過(guò)對(duì)象屬性之間的中對(duì)象之間的靜態(tài)關(guān)系是通過(guò)對(duì)象屬性

34、之間的連接反映的,稱之為連接反映的,稱之為 。2.C+類的構(gòu)造函數(shù)名與類的構(gòu)造函數(shù)名與_名稱一樣,且沒(méi)有返名稱一樣,且沒(méi)有返回值?;刂怠?.C+規(guī)定,當(dāng)一個(gè)成員函數(shù)被調(diào)用時(shí),系統(tǒng)自動(dòng)向規(guī)定,當(dāng)一個(gè)成員函數(shù)被調(diào)用時(shí),系統(tǒng)自動(dòng)向它傳遞一個(gè)隱含的參數(shù),該參數(shù)是一個(gè)指向調(diào)用該函它傳遞一個(gè)隱含的參數(shù),該參數(shù)是一個(gè)指向調(diào)用該函數(shù)的對(duì)象的指針,該指針被稱為數(shù)的對(duì)象的指針,該指針被稱為_(kāi)指針。指針。4.C+語(yǔ)言中的語(yǔ)言中的“聚合聚合”隱含了兩種實(shí)現(xiàn)方式,一種隱含了兩種實(shí)現(xiàn)方式,一種是是 ,另一種是用一個(gè)類的對(duì)象作為一種,另一種是用一個(gè)類的對(duì)象作為一種廣義的數(shù)據(jù)類型來(lái)定義整體對(duì)象的一個(gè)屬性。廣義的數(shù)據(jù)類型來(lái)定義

35、整體對(duì)象的一個(gè)屬性。獨(dú)立地定義獨(dú)立地定義真題練習(xí)真題練習(xí)實(shí)例連接實(shí)例連接類類this5.C+5.C+類中定義的成員默認(rèn)訪問(wèn)屬性為類中定義的成員默認(rèn)訪問(wèn)屬性為( ( ) ) A.Public A.Public B.private B.private C.protected D.friendC.protected D.friend 6.下列哪個(gè)不是面向?qū)ο蟮年P(guān)鍵要素(下列哪個(gè)不是面向?qū)ο蟮年P(guān)鍵要素( )A.抽象性抽象性B.結(jié)構(gòu)性結(jié)構(gòu)性 C.封裝性封裝性D.多態(tài)性多態(tài)性7.C+類中的類中的_函數(shù)在對(duì)象的生存期結(jié)束時(shí)被自函數(shù)在對(duì)象的生存期結(jié)束時(shí)被自動(dòng)調(diào)用。動(dòng)調(diào)用。析構(gòu)析構(gòu)BB B8.8.下列訪問(wèn)成員的

36、方式哪個(gè)是正確的下列訪問(wèn)成員的方式哪個(gè)是正確的( ( ) ) A.A.對(duì)象名對(duì)象名-對(duì)象成員名對(duì)象成員名 B.B.對(duì)象指針名對(duì)象指針名-對(duì)象成員名對(duì)象成員名 C.C.指針名指針名. .對(duì)象成員名對(duì)象成員名 D.D.類名類名. .對(duì)象成員名對(duì)象成員名 B9.不同對(duì)象調(diào)用同名函數(shù),但導(dǎo)致完全不同行為的不同對(duì)象調(diào)用同名函數(shù),但導(dǎo)致完全不同行為的現(xiàn)象稱為現(xiàn)象稱為( ) A.抽象抽象 B.封裝封裝 C.繼承繼承 D.多態(tài)性多態(tài)性D10.在在C+標(biāo)準(zhǔn)庫(kù)中,用標(biāo)準(zhǔn)庫(kù)中,用_類來(lái)表示復(fù)數(shù)。類來(lái)表示復(fù)數(shù)。 complex11.能提供封裝的能提供封裝的C+關(guān)鍵字是關(guān)鍵字是_private12.在定義類成員時(shí),為產(chǎn)

37、生封裝性,則需使用哪個(gè)關(guān)在定義類成員時(shí),為產(chǎn)生封裝性,則需使用哪個(gè)關(guān)鍵字鍵字( )A.public B.publish C.protected D .privateD13.下列關(guān)于析構(gòu)函數(shù)描述正確的是下列關(guān)于析構(gòu)函數(shù)描述正確的是( )A.可以重載可以重載 B.函數(shù)體中必須有函數(shù)體中必須有delete語(yǔ)句語(yǔ)句 C.返回類型必須是返回類型必須是void類型類型 D.不能指定返回類型不能指定返回類型D14.對(duì)于類對(duì)于類Point而言,其析構(gòu)函數(shù)的定義原型為而言,其析構(gòu)函數(shù)的定義原型為 _Point()15.對(duì)象成員構(gòu)造函數(shù)的調(diào)用順序取決于這些對(duì)象在類中對(duì)象成員構(gòu)造函數(shù)的調(diào)用順序取決于這些對(duì)象在類中說(shuō)

38、明的順序,與它們?cè)诔蓡T初始化列表中給出的順序說(shuō)明的順序,與它們?cè)诔蓡T初始化列表中給出的順序_無(wú)關(guān)無(wú)關(guān)1616類的私有成員可在何處訪問(wèn)(類的私有成員可在何處訪問(wèn)( )A A通過(guò)該類的對(duì)象訪問(wèn)通過(guò)該類的對(duì)象訪問(wèn)B B本類的成員函數(shù)中本類的成員函數(shù)中C C通過(guò)任何函數(shù)訪問(wèn)通過(guò)任何函數(shù)訪問(wèn)D D通過(guò)指向該類對(duì)象的指針通過(guò)指向該類對(duì)象的指針B B17. 下列關(guān)于類的權(quán)限的描述錯(cuò)誤的是(下列關(guān)于類的權(quán)限的描述錯(cuò)誤的是( )A類本身的成員函數(shù)只能訪問(wèn)自身的私有成員類本身的成員函數(shù)只能訪問(wèn)自身的私有成員 B類的對(duì)象只能訪問(wèn)該類的公有成員類的對(duì)象只能訪問(wèn)該類的公有成員C普通函數(shù)不能直接訪問(wèn)類的公有成員,必須通過(guò)

39、對(duì)象普通函數(shù)不能直接訪問(wèn)類的公有成員,必須通過(guò)對(duì)象 訪問(wèn)訪問(wèn)D一個(gè)類可以將另一個(gè)類的對(duì)象作為成員一個(gè)類可以將另一個(gè)類的對(duì)象作為成員A A1818thisthis指針存在的目的是(指針存在的目的是( )A A保證基類公有成員在子類中可以被訪問(wèn)保證基類公有成員在子類中可以被訪問(wèn)B B保證每個(gè)對(duì)象擁有自己的數(shù)據(jù)成員,但共享處理這保證每個(gè)對(duì)象擁有自己的數(shù)據(jù)成員,但共享處理這些數(shù)據(jù)成員的代碼些數(shù)據(jù)成員的代碼C C保證基類保護(hù)成員在子類中可以被訪問(wèn)保證基類保護(hù)成員在子類中可以被訪問(wèn) D D保證基類私有成員在子類中可以被訪問(wèn)保證基類私有成員在子類中可以被訪問(wèn)B B19.設(shè)類設(shè)類A將其它類對(duì)象作為成員,則建立

40、將其它類對(duì)象作為成員,則建立A類對(duì)象時(shí),類對(duì)象時(shí),下列描述正確的是(下列描述正確的是( )AA類構(gòu)造函數(shù)先執(zhí)行類構(gòu)造函數(shù)先執(zhí)行B成員構(gòu)造函數(shù)先執(zhí)行成員構(gòu)造函數(shù)先執(zhí)行C兩者并行執(zhí)行兩者并行執(zhí)行 D不能確定不能確定B2020設(shè)在程序中使用如下語(yǔ)句申請(qǐng)了一個(gè)對(duì)象數(shù)組:設(shè)在程序中使用如下語(yǔ)句申請(qǐng)了一個(gè)對(duì)象數(shù)組:Point Point * * ptr ptr = new Point2 = new Point2;則在需要釋放則在需要釋放ptrptr指向的動(dòng)態(tài)數(shù)組對(duì)象時(shí),所使用的指向的動(dòng)態(tài)數(shù)組對(duì)象時(shí),所使用的語(yǔ)句是語(yǔ)句是 。delete ptr; 21.對(duì)象傳送的消息一般由對(duì)象傳送的消息一般由3部分組成:接收對(duì)象名、調(diào)用部分組成:接收對(duì)象名、調(diào)用操作名和操作名和 。必要的參數(shù)必要的參數(shù)22.分析以下程序結(jié)果:分析以下程序結(jié)果:#include class Aint n;public:A()A(int i)n=i;A()coutn=nendl;class BA a;int m;public:B(int i,int j):a(i)m=j;B()coutm=mendl;void main()B b(1,2);23.分析以下程序的結(jié)果:分析以下程序的結(jié)果:#include class Sampleint m,n;publ

溫馨提示

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

評(píng)論

0/150

提交評(píng)論