C語言試題、學(xué)習(xí)、考試大全課件_第1頁
C語言試題、學(xué)習(xí)、考試大全課件_第2頁
C語言試題、學(xué)習(xí)、考試大全課件_第3頁
C語言試題、學(xué)習(xí)、考試大全課件_第4頁
C語言試題、學(xué)習(xí)、考試大全課件_第5頁
已閱讀5頁,還剩50頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、2022-1-27C語言試題、學(xué)習(xí)、考試大全12022-1-27C語言試題、學(xué)習(xí)、考試大全語言試題、學(xué)習(xí)、考試大全2C+語言概述語言概述面向?qū)ο蟮某绦蛟O(shè)計(jì)語言面向?qū)ο蟮某绦蛟O(shè)計(jì)語言 C+支持?jǐn)?shù)據(jù)封裝支持?jǐn)?shù)據(jù)封裝 C+類中包含私有、公有和保護(hù)成員類中包含私有、公有和保護(hù)成員 C+通過發(fā)送消息來處理對象通過發(fā)送消息來處理對象 C+中允許友元破壞封裝性中允許友元破壞封裝性 C+允許函數(shù)名和運(yùn)算符重載允許函數(shù)名和運(yùn)算符重載 C+支持繼承性支持繼承性 C+支持動(dòng)態(tài)聯(lián)編支持動(dòng)態(tài)聯(lián)編在在C+中,結(jié)構(gòu)可作為一種特殊的類,它雖然可中,結(jié)構(gòu)可作為一種特殊的類,它雖然可以包含函數(shù),但它以包含函數(shù),但它沒有私有或保護(hù)

2、的成員沒有私有或保護(hù)的成員。在在C+中,中,類類是支持?jǐn)?shù)據(jù)封裝的工具,是支持?jǐn)?shù)據(jù)封裝的工具,對象對象則是數(shù)則是數(shù)據(jù)封裝的實(shí)現(xiàn)。據(jù)封裝的實(shí)現(xiàn)。類類是類型,是對象的抽象,是類型,是對象的抽象,對象對象是是類的具體實(shí)例。一個(gè)類可以有多個(gè)對象,每個(gè)對象類的具體實(shí)例。一個(gè)類可以有多個(gè)對象,每個(gè)對象都有自己的存儲單元,而類不占存儲單元。都有自己的存儲單元,而類不占存儲單元。C+中類是中類是數(shù)據(jù)和函數(shù)數(shù)據(jù)和函數(shù)的封裝體,它提供一種數(shù)據(jù)的封裝體,它提供一種數(shù)據(jù)訪問嚴(yán)格控制的機(jī)制,數(shù)據(jù)被隱藏在封裝體中,該訪問嚴(yán)格控制的機(jī)制,數(shù)據(jù)被隱藏在封裝體中,該封裝體通過操作接口與外界交換信息。封裝體通過操作接口與外界交換信

3、息。友元可以是在類外定義的函數(shù),也可以是在類外友元可以是在類外定義的函數(shù),也可以是在類外定義的整個(gè)類。友元可以訪問類的定義的整個(gè)類。友元可以訪問類的私有成員私有成員。面向?qū)ο蟮某绦蛟O(shè)計(jì)的四大特征:面向?qū)ο蟮某绦蛟O(shè)計(jì)的四大特征: 抽象、封裝、抽象、封裝、 繼承繼承 、 多態(tài)多態(tài) 。2022-1-27C語言試題、學(xué)習(xí)、考試大全語言試題、學(xué)習(xí)、考試大全3C+與與C語言的關(guān)系:語言的關(guān)系:C語言是語言是C+的一個(gè)子集,的一個(gè)子集,C+包含了包含了C語言的全部內(nèi)容。語言的全部內(nèi)容。 C+保持與保持與C語言的兼容語言的兼容 C+對對C語言作了很多改進(jìn)語言作了很多改進(jìn) C+與與C語言的本質(zhì)差別在于語言的本質(zhì)

4、差別在于C+是面向?qū)ο蟮?,而是面向?qū)ο蟮?,而C語言是面向過程的。語言是面向過程的。(1) 增加了一些增加了一些新的運(yùn)算符新的運(yùn)算符,如,如 :, new, delete, -* 等;等;(2) 改進(jìn)了改進(jìn)了類型系統(tǒng)類型系統(tǒng),增加了安全性;,增加了安全性;(3) 引進(jìn)了引進(jìn)了引用引用的概念,使用引用作函數(shù)參數(shù)帶來了很大方的概念,使用引用作函數(shù)參數(shù)帶來了很大方便;便;(4) 允許允許函數(shù)重載函數(shù)重載,允許,允許設(shè)置缺省參數(shù)設(shè)置缺省參數(shù),提高了編程的靈活,提高了編程的靈活性;性;(5) 引進(jìn)引進(jìn)內(nèi)聯(lián)函數(shù)內(nèi)聯(lián)函數(shù),提高了程序效率;,提高了程序效率;(6) 可根據(jù)需要可根據(jù)需要隨時(shí)對變量進(jìn)行說明隨時(shí)對變

5、量進(jìn)行說明。面向過程的程序設(shè)計(jì)面向過程的程序設(shè)計(jì)將數(shù)據(jù)和對數(shù)據(jù)的操作分離,程序是將數(shù)據(jù)和對數(shù)據(jù)的操作分離,程序是由一個(gè)個(gè)的函數(shù)組成的,由一個(gè)個(gè)的函數(shù)組成的,面向?qū)ο蟮某绦蛟O(shè)計(jì)面向?qū)ο蟮某绦蛟O(shè)計(jì)將數(shù)據(jù)和操將數(shù)據(jù)和操作封裝在一起,程序是由一個(gè)個(gè)對象組成的,對象之間通作封裝在一起,程序是由一個(gè)個(gè)對象組成的,對象之間通過接口進(jìn)行通信,它能夠較好地支持程序代碼的復(fù)用。過接口進(jìn)行通信,它能夠較好地支持程序代碼的復(fù)用。 2022-1-27C語言試題、學(xué)習(xí)、考試大全語言試題、學(xué)習(xí)、考試大全4C+數(shù)據(jù)操作基礎(chǔ)數(shù)據(jù)操作基礎(chǔ)2.1 C+程序進(jìn)行輸入和輸出的操作方法程序進(jìn)行輸入和輸出的操作方法 #include in

6、t main( ) int x, y; /定義兩個(gè)整型變量定義兩個(gè)整型變量 cin x y ; /鍵盤輸入變量值鍵盤輸入變量值 cout “x =” x endl “y =” y ”和輸出操作符和輸出操作符“= 0 ) ? a : -a 注意:注意:表達(dá)式表達(dá)式1、2、3的數(shù)據(jù)類型不能是的數(shù)據(jù)類型不能是 void 類型。類型。2022-1-27C語言試題、學(xué)習(xí)、考試大全語言試題、學(xué)習(xí)、考試大全9switch ( 變量名變量名 ) case 值值1 : 語句序列語句序列1 ; break ; case 值值 2 : 語句序列語句序列2 ; break ; default : 語句序列語句序列 n

7、 ;2022-1-27C語言試題、學(xué)習(xí)、考試大全語言試題、學(xué)習(xí)、考試大全102.2.2 循環(huán)語句循環(huán)語句for 循環(huán):循環(huán):for ( exp1; exp2; exp3) statement;.while 循環(huán):循環(huán):while ( expression) do while 循環(huán):循環(huán):do statement; .while (expression);三種循環(huán)都可以嵌套。三種循環(huán)都可以嵌套。2022-1-27C語言試題、學(xué)習(xí)、考試大全語言試題、學(xué)習(xí)、考試大全11 for ( exp1; exp2; exp3) statement;.等價(jià)于:等價(jià)于: exp1 ; while ( exp2 )

8、 statement ; exp3 ; 例:例: int sum = 0 ;for ( int i = 1 ; i = 10 ; i + ) sum += i;2022-1-27C語言試題、學(xué)習(xí)、考試大全語言試題、學(xué)習(xí)、考試大全122.2.3 轉(zhuǎn)移語句轉(zhuǎn)移語句break 語句:語句: 強(qiáng)制退出循環(huán)及中斷強(qiáng)制退出循環(huán)及中斷case語句,直接語句,直接執(zhí)行循環(huán)體后的語句。執(zhí)行循環(huán)體后的語句。continue 語句:不完全退出循環(huán),而是使循環(huán)重語句:不完全退出循環(huán),而是使循環(huán)重新回到測試位置,并忽略此語句至循環(huán)結(jié)束前新回到測試位置,并忽略此語句至循環(huán)結(jié)束前的語句序列。的語句序列。goto 語句:無條

9、件轉(zhuǎn)移,只限在同一程序段內(nèi)轉(zhuǎn)換,語句:無條件轉(zhuǎn)移,只限在同一程序段內(nèi)轉(zhuǎn)換,不能跳到另一函數(shù)或程序內(nèi)。不能跳到另一函數(shù)或程序內(nèi)。2022-1-27C語言試題、學(xué)習(xí)、考試大全語言試題、學(xué)習(xí)、考試大全132.3 2.3 指針指針 1. 定義定義:包含另一變量內(nèi)存地址的變量。包含另一變量內(nèi)存地址的變量。 3. 指針與數(shù)組的關(guān)系指針與數(shù)組的關(guān)系 數(shù)組是指針的另一種表示法。數(shù)組的名字實(shí)際就數(shù)組是指針的另一種表示法。數(shù)組的名字實(shí)際就是數(shù)組的起始地址。是數(shù)組的起始地址。int arr2 = 0,1;arr1 和和 *(arr + 1)是完全一致的。是完全一致的。2. 聲明聲明 指針在使用前需進(jìn)行聲明,聲明格式

10、為:指針在使用前需進(jìn)行聲明,聲明格式為: 數(shù)據(jù)類型數(shù)據(jù)類型 *變量;變量; 或或 數(shù)據(jù)類型數(shù)據(jù)類型* 變量;變量;2022-1-27C語言試題、學(xué)習(xí)、考試大全語言試題、學(xué)習(xí)、考試大全144. “&” 與與 “*” “&”是一個(gè)一元操作符,它操作一個(gè)對象,是一個(gè)一元操作符,它操作一個(gè)對象,得到該對象的存儲單元的地址值;得到該對象的存儲單元的地址值; 例:例: int i; int *p; p = &i ; *p = *p + 5; “* ”也是一個(gè)一元操作符,用于表達(dá)被指針指也是一個(gè)一元操作符,用于表達(dá)被指針指向的對象。向的對象。 2022-1-27C語言試題、學(xué)習(xí)、考試大全語言試題、學(xué)習(xí)、考試

11、大全155. new 與與 delete new 用于為指針分配內(nèi)存空間;用于為指針分配內(nèi)存空間;delete 用于釋放指用于釋放指針?biāo)加械膬?nèi)存空間。針?biāo)加械膬?nèi)存空間。 標(biāo)準(zhǔn)標(biāo)準(zhǔn)C用用malloc 和和 free 函數(shù)分配內(nèi)存塊和釋放內(nèi)存塊。函數(shù)分配內(nèi)存塊和釋放內(nèi)存塊。2022-1-27C語言試題、學(xué)習(xí)、考試大全語言試題、學(xué)習(xí)、考試大全16w(5.1) 運(yùn)算符運(yùn)算符new :w運(yùn)算符運(yùn)算符new用于動(dòng)態(tài)存儲分配。用于動(dòng)態(tài)存儲分配。 wnew返回一個(gè)指向所分配空間的指針。返回一個(gè)指向所分配空間的指針。w例:例:int y;y=new int; y=10;w也可將上述各語句作適當(dāng)合并如下:也可

12、將上述各語句作適當(dāng)合并如下:wint y=new int; y=10;w或或 int y=new int(10);w或或 int y;y=new int(10);2022-1-27C語言試題、學(xué)習(xí)、考試大全語言試題、學(xué)習(xí)、考試大全17(5.2) 一維數(shù)組一維數(shù)組 :w為了在運(yùn)行時(shí)創(chuàng)建一個(gè)大小可動(dòng)態(tài)變化的一維浮點(diǎn)數(shù)為了在運(yùn)行時(shí)創(chuàng)建一個(gè)大小可動(dòng)態(tài)變化的一維浮點(diǎn)數(shù)組組x,可先將,可先將x聲明為一個(gè)聲明為一個(gè)float類型的指針。然后用類型的指針。然后用new為數(shù)組動(dòng)態(tài)地分配存儲空間。為數(shù)組動(dòng)態(tài)地分配存儲空間。w例:例:wfloat x=new floatn;w創(chuàng)建一個(gè)大小為創(chuàng)建一個(gè)大小為n的一維浮點(diǎn)

13、數(shù)組。運(yùn)算符的一維浮點(diǎn)數(shù)組。運(yùn)算符new分配分配n個(gè)浮點(diǎn)數(shù)所需的空間,并返回指向第一個(gè)浮點(diǎn)數(shù)的指個(gè)浮點(diǎn)數(shù)所需的空間,并返回指向第一個(gè)浮點(diǎn)數(shù)的指針。然后可用針。然后可用x0,x1,xn-1來訪問每個(gè)數(shù)組來訪問每個(gè)數(shù)組元素。元素。2022-1-27C語言試題、學(xué)習(xí)、考試大全語言試題、學(xué)習(xí)、考試大全18(5.3) 運(yùn)算符運(yùn)算符delete :w當(dāng)動(dòng)態(tài)分配的存儲空間已不再需要時(shí)應(yīng)及時(shí)釋放所占當(dāng)動(dòng)態(tài)分配的存儲空間已不再需要時(shí)應(yīng)及時(shí)釋放所占用的空間。用的空間。w用運(yùn)算符用運(yùn)算符delete來釋放由來釋放由new分配的空間。分配的空間。w例:例:wdelete y;wdelete x;w分別釋放分配給分別釋

14、放分配給 y的空間和分配給一維數(shù)組的空間和分配給一維數(shù)組x的空間。的空間。2022-1-27C語言試題、學(xué)習(xí)、考試大全語言試題、學(xué)習(xí)、考試大全19(5.4) 動(dòng)態(tài)二維數(shù)組動(dòng)態(tài)二維數(shù)組 :w創(chuàng)建類型為創(chuàng)建類型為Type的動(dòng)態(tài)工作數(shù)組,這個(gè)數(shù)組有的動(dòng)態(tài)工作數(shù)組,這個(gè)數(shù)組有rows行行和和cols列。列。template void Make2DArray(Type* &x,int rows, int cols) x=new Type*rows; for (int i=0;irows;i+) xi=new Typecols;2022-1-27C語言試題、學(xué)習(xí)、考試大全語言試題、學(xué)習(xí)、考試大全20w當(dāng)不

15、再需要一個(gè)動(dòng)態(tài)分配的二維數(shù)組時(shí),可按以下步驟釋放它所當(dāng)不再需要一個(gè)動(dòng)態(tài)分配的二維數(shù)組時(shí),可按以下步驟釋放它所占用的空間。首先釋放在占用的空間。首先釋放在for循環(huán)中為每一行所分配的空間。然后循環(huán)中為每一行所分配的空間。然后釋放為行指針分配的空間。釋放為行指針分配的空間。w釋放空間后將釋放空間后將x置為置為0,以防繼續(xù)訪問已被釋放的空間。,以防繼續(xù)訪問已被釋放的空間。template void Delete2DArray(Type* &x,int rows) for (int i=0;irows;i+) delete xi; delete x; x=0;2022-1-27C語言試題、學(xué)習(xí)、考試大

16、全語言試題、學(xué)習(xí)、考試大全212.4 函數(shù)與參數(shù)傳遞函數(shù)與參數(shù)傳遞 當(dāng)一個(gè)函數(shù)定義有形參時(shí),在進(jìn)行函數(shù)調(diào)用時(shí),必須當(dāng)一個(gè)函數(shù)定義有形參時(shí),在進(jìn)行函數(shù)調(diào)用時(shí),必須提供與形參個(gè)數(shù)、類型相同的實(shí)參。提供與形參個(gè)數(shù)、類型相同的實(shí)參。 在在C+中,有兩種參數(shù)傳遞機(jī)制將實(shí)參的值傳遞給形中,有兩種參數(shù)傳遞機(jī)制將實(shí)參的值傳遞給形參:參:值傳遞值傳遞( 值調(diào)用值調(diào)用 )和和引用傳遞引用傳遞( 引用調(diào)用引用調(diào)用 )。1. 值傳遞值傳遞 在這種機(jī)制中,實(shí)參的值被在這種機(jī)制中,實(shí)參的值被拷貝拷貝到由相應(yīng)形參名字所到由相應(yīng)形參名字所標(biāo)識的對象中。在函數(shù)內(nèi)部對形參的訪問或更新都是是標(biāo)識的對象中。在函數(shù)內(nèi)部對形參的訪問或更

17、新都是是對這個(gè)對象的訪問或更新。對這個(gè)對象的訪問或更新。實(shí)參本身的值在調(diào)用前后和實(shí)參本身的值在調(diào)用前后和調(diào)用過程中都不發(fā)生變化。調(diào)用過程中都不發(fā)生變化。2022-1-27C語言試題、學(xué)習(xí)、考試大全語言試題、學(xué)習(xí)、考試大全22int double( int a ) a *= 2 ; cout“a=“aendl; return a; #include void main() int b = 10; double(b); cout“b=“ 數(shù)據(jù)成員數(shù)據(jù)成員 指針名指針名 - 成員函數(shù)成員函數(shù)例:例:CPerson *pWang; pWang - age = 30 ; pWang -PrintAge(

18、 );類和對象的關(guān)系就如同整型類和對象的關(guān)系就如同整型 int 與整型變量與整型變量 i 之間的之間的關(guān)系。關(guān)系。2022-1-27C語言試題、學(xué)習(xí)、考試大全語言試題、學(xué)習(xí)、考試大全333.3 類的成員類的成員3.3.1 構(gòu)造函數(shù)構(gòu)造函數(shù) 構(gòu)造函數(shù)是一個(gè)特殊的構(gòu)造函數(shù)是一個(gè)特殊的類成員函數(shù)類成員函數(shù),用于初始化類變量,用于初始化類變量或分配內(nèi)存空間。當(dāng)用類定義一個(gè)對象時(shí),或分配內(nèi)存空間。當(dāng)用類定義一個(gè)對象時(shí),自動(dòng)調(diào)用自動(dòng)調(diào)用構(gòu)造構(gòu)造函數(shù),使對象保持一個(gè)確定的狀態(tài)。函數(shù),使對象保持一個(gè)確定的狀態(tài)。1. 構(gòu)造函數(shù)的聲明構(gòu)造函數(shù)的聲明class CExample int I ;public: CEx

19、ample( ) ; ;2022-1-27C語言試題、學(xué)習(xí)、考試大全語言試題、學(xué)習(xí)、考試大全342. 構(gòu)造函數(shù)的特點(diǎn)構(gòu)造函數(shù)的特點(diǎn) (1) 構(gòu)造函數(shù)與類必須具有相同的名字。構(gòu)造函數(shù)與類必須具有相同的名字。 例例:class CExample CExample ( ) ; CExample ( int i ) ; CExample ( int x , int y ) ; private : int member1, member2 ; ; (2) 創(chuàng)建對象時(shí)自動(dòng)執(zhí)行構(gòu)造函數(shù),構(gòu)造函數(shù)不能在程創(chuàng)建對象時(shí)自動(dòng)執(zhí)行構(gòu)造函數(shù),構(gòu)造函數(shù)不能在程 序中被顯式調(diào)用。序中被顯式調(diào)用。(3)構(gòu)造函數(shù)不需要函數(shù)類型

20、,不能被繼承。構(gòu)造函數(shù)不需要函數(shù)類型,不能被繼承。 (4)構(gòu)造函數(shù)可以接受參數(shù)并能夠重載。構(gòu)造函數(shù)可以接受參數(shù)并能夠重載。2022-1-27C語言試題、學(xué)習(xí)、考試大全語言試題、學(xué)習(xí)、考試大全35CExample : CExample ( int i ) member1 = i ; member2 = 0 ;int main( ) CExample ex1; CExample ex2(1); CExample ex3( 2, 3 ); CExample : CExample ( ) member1 = 0; member2 = 0;CExample : CExample ( int x , in

21、t y ) member1 = x ; member2 = y ;2022-1-27C語言試題、學(xué)習(xí)、考試大全語言試題、學(xué)習(xí)、考試大全36 (5) 若程序沒有為一個(gè)類定義任何構(gòu)造函數(shù),則編譯器若程序沒有為一個(gè)類定義任何構(gòu)造函數(shù),則編譯器 生成一個(gè)不帶參數(shù)的公有構(gòu)造函數(shù),這個(gè)構(gòu)造函數(shù)生成一個(gè)不帶參數(shù)的公有構(gòu)造函數(shù),這個(gè)構(gòu)造函數(shù) 什么也不做,稱為缺省構(gòu)造函數(shù)。什么也不做,稱為缺省構(gòu)造函數(shù)。 例:例:CExample : CExample3.3.2 析構(gòu)函數(shù)析構(gòu)函數(shù) 析構(gòu)函數(shù)與構(gòu)造函數(shù)功能相反,也是析構(gòu)函數(shù)與構(gòu)造函數(shù)功能相反,也是類成員函數(shù)類成員函數(shù),通常用于釋放已分配的內(nèi)存空間或完成對象被清除前的

22、通常用于釋放已分配的內(nèi)存空間或完成對象被清除前的一些清理工作。一些清理工作。2022-1-27C語言試題、學(xué)習(xí)、考試大全語言試題、學(xué)習(xí)、考試大全37 class CExample public:CExample( );void Print ( );CExample( ); ;析構(gòu)函數(shù)的特點(diǎn)析構(gòu)函數(shù)的特點(diǎn):1.與構(gòu)造函數(shù)具有相同的名字,前面必須加上與構(gòu)造函數(shù)具有相同的名字,前面必須加上“”符號。符號。2.析構(gòu)函數(shù)沒有函數(shù)類型,不能被繼承。析構(gòu)函數(shù)沒有函數(shù)類型,不能被繼承。2022-1-27C語言試題、學(xué)習(xí)、考試大全語言試題、學(xué)習(xí)、考試大全383.3.3 內(nèi)聯(lián)函數(shù)內(nèi)聯(lián)函數(shù) 在函數(shù)定義前加上一個(gè)在函

23、數(shù)定義前加上一個(gè)inline前綴,該函數(shù)就被定義前綴,該函數(shù)就被定義成一個(gè)內(nèi)聯(lián)函數(shù)。成一個(gè)內(nèi)聯(lián)函數(shù)。3.析構(gòu)函數(shù)析構(gòu)函數(shù)不能帶有參數(shù)不能帶有參數(shù),而且,而且不可以重載不可以重載。4.析構(gòu)函數(shù)在析構(gòu)函數(shù)在 結(jié)束時(shí)被自動(dòng)調(diào)用。結(jié)束時(shí)被自動(dòng)調(diào)用。 對于內(nèi)聯(lián)函數(shù),編譯時(shí)在所有調(diào)用該函數(shù)的地方將對于內(nèi)聯(lián)函數(shù),編譯時(shí)在所有調(diào)用該函數(shù)的地方將裝裝入實(shí)際的函數(shù)代碼入實(shí)際的函數(shù)代碼。 內(nèi)聯(lián)函數(shù)的聲明必須出現(xiàn)在對它的每個(gè)調(diào)用之前。內(nèi)聯(lián)函數(shù)的聲明必須出現(xiàn)在對它的每個(gè)調(diào)用之前。2022-1-27C語言試題、學(xué)習(xí)、考試大全語言試題、學(xué)習(xí)、考試大全393.3.5 對象與成員函數(shù)對象與成員函數(shù)成員函數(shù)的參數(shù)和返回值不僅可以

24、是整型、字符型、成員函數(shù)的參數(shù)和返回值不僅可以是整型、字符型、指針類型等,也可以把對象作為參數(shù)和返回值。指針類型等,也可以把對象作為參數(shù)和返回值。class CPoint float x, y ;public: CPoint ( float a, float b ); CPoint Add ( CPoint A ); 2022-1-27C語言試題、學(xué)習(xí)、考試大全語言試題、學(xué)習(xí)、考試大全40CPoint : CPoint ( float a, float b )x = a ;y = b ;CPoint CPoint : Add ( CPoint A )CPoint B;B.x = x + A.x

25、 ;B.y = y + A.y;return B;2022-1-27C語言試題、學(xué)習(xí)、考試大全語言試題、學(xué)習(xí)、考試大全413.4 this指針指針 this指針是一個(gè)指針是一個(gè)隱含隱含于每個(gè)類的成員函數(shù)中的特殊指于每個(gè)類的成員函數(shù)中的特殊指針。針。 this用于指向以該成員函數(shù)所屬類定義的對象。用于指向以該成員函數(shù)所屬類定義的對象。 當(dāng)某個(gè)對象調(diào)用成員函數(shù)時(shí),成員函數(shù)的當(dāng)某個(gè)對象調(diào)用成員函數(shù)時(shí),成員函數(shù)的this指針便指針便指向該對象。因此,當(dāng)指向該對象。因此,當(dāng)不同的對象引用同一個(gè)成員函數(shù)不同的對象引用同一個(gè)成員函數(shù)時(shí),編譯器就依據(jù)成員函數(shù)時(shí),編譯器就依據(jù)成員函數(shù) this 指針指向的不同對

26、象來指針指向的不同對象來確定引用哪一個(gè)對象的數(shù)據(jù)成員。確定引用哪一個(gè)對象的數(shù)據(jù)成員。 2022-1-27C語言試題、學(xué)習(xí)、考試大全語言試題、學(xué)習(xí)、考試大全42例:例:#include class A public:A( ) a=b=0; A(int i, int j ) a=i;b=j;void copy(A &aa);void print( ) couta“,”bendl; private:int a, b;void A : copy(A &aa) if(this = &aa) return; *this = aa;void main( ) A a1,a2(3,4); a1.copy(a2)

27、; a1.print();2022-1-27C語言試題、學(xué)習(xí)、考試大全語言試題、學(xué)習(xí)、考試大全433.5 const關(guān)鍵字關(guān)鍵字3.5.2 const 的特點(diǎn)及使用注意事項(xiàng)的特點(diǎn)及使用注意事項(xiàng) 3.5.1 聲明語法聲明語法 const 是一個(gè)類型修飾符,語法是:是一個(gè)類型修飾符,語法是: T const 其中,其中,T是一個(gè)是一個(gè)類型表達(dá)式類型表達(dá)式。 const 與與 T 之間的關(guān)系之間的關(guān)系是是左結(jié)合左結(jié)合的。的。1. 使用使用const 聲明的對象不能被更新。聲明的對象不能被更新。2. 由于這種對象不能被更新,因此必須進(jìn)行初始化。由于這種對象不能被更新,因此必須進(jìn)行初始化。 int co

28、nst a = 2 ; a = 1 ;/ error2022-1-27C語言試題、學(xué)習(xí)、考試大全語言試題、學(xué)習(xí)、考試大全443. const 常被用于聲明函數(shù)的形參。指針類型或引用類常被用于聲明函數(shù)的形參。指針類型或引用類型的形參使函數(shù)可以更新調(diào)用者中的對象,但若函數(shù)型的形參使函數(shù)可以更新調(diào)用者中的對象,但若函數(shù)并不更新指針?biāo)赶虻膶ο蠡蛞盟玫膶ο螅遣⒉桓轮羔標(biāo)赶虻膶ο蠡蛞盟玫膶ο?,那么最好將這樣的參數(shù)使用么最好將這樣的參數(shù)使用 const 關(guān)鍵字進(jìn)行聲明。關(guān)鍵字進(jìn)行聲明。4. 當(dāng)當(dāng)T是一個(gè)簡單的類型名時(shí),習(xí)慣上寫作是一個(gè)簡單的類型名時(shí),習(xí)慣上寫作 const T 。 例:例

29、: const int x = 0 ;void Print( ) const; /類的常成員函數(shù)類的常成員函數(shù) 5. 對于類中不更新對象的數(shù)據(jù)成員的成員函數(shù),可以將對于類中不更新對象的數(shù)據(jù)成員的成員函數(shù),可以將其使用其使用const進(jìn)行聲明。進(jìn)行聲明。 當(dāng)一個(gè)成員函數(shù)使用當(dāng)一個(gè)成員函數(shù)使用const進(jìn)行聲明后,就表明這個(gè)進(jìn)行聲明后,就表明這個(gè)函數(shù)可以操作常對象。沒有使用函數(shù)可以操作常對象。沒有使用const關(guān)鍵字進(jìn)行聲明關(guān)鍵字進(jìn)行聲明的成員函數(shù)則不能操作常對象。的成員函數(shù)則不能操作常對象。2022-1-27C語言試題、學(xué)習(xí)、考試大全語言試題、學(xué)習(xí)、考試大全456. 由于由于const對象必須初

30、始化且不能被更新,因此,當(dāng)對象必須初始化且不能被更新,因此,當(dāng)類中聲明了類中聲明了const數(shù)據(jù)成員時(shí),只能通過成員初始化列數(shù)據(jù)成員時(shí),只能通過成員初始化列表來構(gòu)造該數(shù)據(jù)成員。表來構(gòu)造該數(shù)據(jù)成員。例:例: class CExample public: CExample ( int x ) ; private: const int a ; ; CExample : CExample ( int x ) : a( x ) ; 在類中聲明靜態(tài)的在類中聲明靜態(tài)的const數(shù)數(shù)據(jù)成員時(shí),據(jù)成員時(shí),class A private: static const int SIZE ;const int A :

31、SIZE = 10 ;2022-1-27C語言試題、學(xué)習(xí)、考試大全語言試題、學(xué)習(xí)、考試大全463.6 友元函數(shù)友元函數(shù)3.6.1 定義定義 友元函數(shù)是一種特殊的函數(shù),友元函數(shù)是一種特殊的函數(shù),它不是類的成員函數(shù)它不是類的成員函數(shù), 但允許它訪問類的私有類型數(shù)據(jù)和保護(hù)類型數(shù)據(jù)。但允許它訪問類的私有類型數(shù)據(jù)和保護(hù)類型數(shù)據(jù)。3.6.2 聲明方式聲明方式class 類名稱類名稱/相關(guān)的類相關(guān)的類 type vars ; public: friend 函數(shù)類型函數(shù)類型 函數(shù)名稱函數(shù)名稱( ) ;/聲明友元聲明友元 函數(shù)類型函數(shù)類型 函數(shù)名稱函數(shù)名稱( ) /定義友元定義友元 2022-1-27C語言試題

32、、學(xué)習(xí)、考試大全語言試題、學(xué)習(xí)、考試大全473.6.3 特點(diǎn)特點(diǎn)1. 友元可以是一個(gè)一般的函數(shù)友元可以是一個(gè)一般的函數(shù) (友元函數(shù)友元函數(shù)),也可以是另,也可以是另一個(gè)類的成員函數(shù)一個(gè)類的成員函數(shù) (友元成員友元成員),還可以是整個(gè)的一個(gè)類,還可以是整個(gè)的一個(gè)類 (友元類友元類,這時(shí)類中的所有成員函數(shù)都是友元函數(shù),這時(shí)類中的所有成員函數(shù)都是友元函數(shù))。2. 友元函數(shù)須在私有成員可被它訪問的類中聲明,而函友元函數(shù)須在私有成員可被它訪問的類中聲明,而函數(shù)體則在類外聲明。數(shù)體則在類外聲明。3. 友元函數(shù)雖然在類中聲明,友元函數(shù)雖然在類中聲明,但它不是該類的成員函數(shù),但它不是該類的成員函數(shù),而是獨(dú)立于

33、任何類的一般的外界函數(shù),而是獨(dú)立于任何類的一般的外界函數(shù),它被允許訪問該它被允許訪問該類的所有對象的私有成員。類的所有對象的私有成員。4. C+中使用友元是為了提高程序的運(yùn)行效率。但為了中使用友元是為了提高程序的運(yùn)行效率。但為了確保數(shù)據(jù)的完整性及數(shù)據(jù)封裝與隱藏的原則,確保數(shù)據(jù)的完整性及數(shù)據(jù)封裝與隱藏的原則,應(yīng)盡可能應(yīng)盡可能不使用或少使用友元函數(shù)。不使用或少使用友元函數(shù)。2022-1-27C語言試題、學(xué)習(xí)、考試大全語言試題、學(xué)習(xí)、考試大全483.7 引用引用 引用是給對象取一個(gè)引用是給對象取一個(gè)別名別名,它引入了對象的一個(gè),它引入了對象的一個(gè)同同義詞義詞。error3.7.1 定義定義 定義引用

34、的關(guān)鍵字定義引用的關(guān)鍵字:T & 例例:int i ;int & j ; int & j = i ;j = i ; j = 6 ;注意注意:(1)引用不產(chǎn)生對象的副本,而是對象的引用不產(chǎn)生對象的副本,而是對象的同義詞同義詞,它們表示它們表示同一個(gè)對象同一個(gè)對象。 (2)定義引用時(shí),必須定義引用時(shí),必須馬上對它進(jìn)行初始化馬上對它進(jìn)行初始化,不能,不能定義完后再賦值。定義完后再賦值。2022-1-27C語言試題、學(xué)習(xí)、考試大全語言試題、學(xué)習(xí)、考試大全49 (3)對對象或?qū)σ玫娜魏尾僮鞫紩绊懙剿鼈児餐膶ο蟆ο蠡驅(qū)σ玫娜魏尾僮鞫紩绊懙剿鼈児餐膶ο蟆?3.7.2 引用的使用引用的使用引用

35、參數(shù)引用參數(shù)引用可以用在需要改變實(shí)參變量的函數(shù)中;引用可以用在需要改變實(shí)參變量的函數(shù)中; #include void swap( int x, int y ) int temp ; temp = x ; x = y ; y = temp ; (4)引用一旦被初始化,就不能被改變,也不能更新引用,引用一旦被初始化,就不能被改變,也不能更新引用, 使其標(biāo)識另一個(gè)對象。使其標(biāo)識另一個(gè)對象。2022-1-27C語言試題、學(xué)習(xí)、考試大全語言試題、學(xué)習(xí)、考試大全50運(yùn)行結(jié)果運(yùn)行結(jié)果: a = 1 b = 2 a = 1 b = 2 main ( ) int a = 1, b = 2 ; cout “a = ” a “b = ” b endl ; swap ( a , b) ; cout “a = ” a “b = ” b y ? x : y; double max(double x, double y) return xy ? x : y; template T max(T x, T y) return xy ? x : y; int i=max(1,2);double x=max(1.0,2.0);2022-1-27C語言試題、學(xué)習(xí)、考試大全語言試題、學(xué)習(xí)、考試大全523.9 運(yùn)算符重載運(yùn)算符重載為用戶定

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論