c++期末總復(fù)習(xí)-精華篇_第1頁(yè)
c++期末總復(fù)習(xí)-精華篇_第2頁(yè)
c++期末總復(fù)習(xí)-精華篇_第3頁(yè)
c++期末總復(fù)習(xí)-精華篇_第4頁(yè)
c++期末總復(fù)習(xí)-精華篇_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余11頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

1、C+復(fù)習(xí)摘要第一部分一一簡(jiǎn)單的程序設(shè)計(jì)一、標(biāo)識(shí)符(包括變量名命名規(guī)則)1、定義:由數(shù)字、大小寫(xiě)字母和下劃線組成2、例子:合法:Int(大小寫(xiě)不一樣,不是關(guān)鍵字int)、_ab不合法:new和friend(不能與關(guān)鍵字相同)2b(開(kāi)頭不能是數(shù)字)、a+b(不能有+)、一、基本數(shù)據(jù)類(lèi)型存儲(chǔ)空間位數(shù)存儲(chǔ)形式double864補(bǔ)碼int432補(bǔ)碼float432補(bǔ)碼char18ASCII碼特殊:指針*p4(固定為longint類(lèi)型)string16(固定大?。┳?:精度低一自動(dòng)轉(zhuǎn)換一精度高注2:inta;a=8/3a=2(int整型)三、常量與變量1、八進(jìn)制一正負(fù)號(hào)和0開(kāi)頭,例:012、-057十六進(jìn)

2、制一正負(fù)號(hào)和0x或0X開(kāi)頭,例:0x34、-0X682、字符常量(1)普通字符:A、0、#、(空格)(2)轉(zhuǎn)義字符:n、(表示)、0(3)a一個(gè)字節(jié),“a”一兩個(gè)字節(jié)(包括/0),長(zhǎng)度為1注:ddd表示八進(jìn)制字符xdd表示十六進(jìn)制字符例:strlen(abc1200as0d)和sizeof(abc1200asd)的值分析1:其中有a、b、c、120(八進(jìn)制)、0(碰到第一個(gè)則終止,且不計(jì)入長(zhǎng)度),所以結(jié)果為5分析2:算上所有的字符(包括0,注意有個(gè)空格在a與s之間),結(jié)果為11(char字符占一個(gè)字節(jié))3、指數(shù):2e-6、-1.5E2(結(jié)尾加一個(gè)f(F),表示結(jié)果為float型)注:e(E)后

3、(即指數(shù))必須是整數(shù)四、運(yùn)算符和表達(dá)式1、算術(shù)運(yùn)算符+、-、/(不是)、*(不可省略)、%(取余)注1:+()、-(),其中()中必須是變量,不能是常量和表達(dá)式例:5+、(a+b)+、+(2*i)不合法注2:inti=5,b;b=i+;b=5;i=6inti=5,c;c=+i;c=6;i=62、賦值運(yùn)算符(1)區(qū)分“二”和“二二”(2)a+=ba=a+b3、關(guān)系運(yùn)算符和邏輯運(yùn)算符(1)結(jié)果總為1或0例1:t=54t=(54)54為真,則結(jié)果為1t的值為1例2:a=1&2a=(1!=0)&(2!=0)a=1(&運(yùn)算優(yōu)先級(jí)高)4、逗號(hào)運(yùn)算符:表達(dá)式結(jié)果為最后一個(gè)逗號(hào)后的結(jié)果例:a=3*5,a+5表

4、達(dá)式結(jié)果為20五、語(yǔ)句1、if(a)if(a!=0)2、dowhlie語(yǔ)句一至少執(zhí)行一次例:dointi=1;j=0while(a=b)分析:先循環(huán)一次,由于條件為i=j(i=bj)!=0(不是a=b),則結(jié)果是無(wú)限循環(huán)3、switch語(yǔ)句不一定每個(gè)case后都有break(跳由當(dāng)前循環(huán)語(yǔ)句,而不是if語(yǔ)句),default至多一個(gè)。例:switch(a)case1:coutA;break;case2:coutBcase3:cout類(lèi)比類(lèi)與對(duì)象3、共用體:union注:若干個(gè)成員中,其中占用內(nèi)存最大的,作為共用體類(lèi)型的大小(不是相加)例:unionaintx;chars;顯然占4個(gè)字節(jié)(int

5、),而不是char的1個(gè)字節(jié)六、補(bǔ)充1、charname20cout輸由為字符數(shù)組的內(nèi)容intname20cout輸由首地址2、char*p=hello”(類(lèi)比數(shù)組)(1)couth(2)couthello(3)coutello指針向后移動(dòng)一位,指向e,再輸由后面的內(nèi)容3、strcmp(s1,s2)進(jìn)行大小比較Strcpy(s1,s2)s1=s2a等s2的內(nèi)容賦給s1)S=strcat(s1,s2)將s1與s2的內(nèi)容進(jìn)行連接,再給S第三部分一一函數(shù)一、認(rèn)識(shí)函數(shù)1、聲明:intadd(inta,intb);一形參不占用空間,可省略為intadd(int,int);(注意要有”;”)調(diào)用:z=ad

6、d(a,b)a,b均為實(shí)參(有內(nèi)容)例:z=swap(a+b,max(c),v)swap函數(shù)實(shí)參為3個(gè)(兩個(gè)逗號(hào))2、C+的程序總、是從main函數(shù)開(kāi)始執(zhí)行的3、函數(shù)不允許嵌套定義,但是可以相互調(diào)用4、有默認(rèn)值的形參右邊都要有默認(rèn)值例:int(inta,intb=0)合法int(inta=0,intb)不合法5、引用傳遞:swap(int&x);x的值與函數(shù)結(jié)果有關(guān)swap(intx);swap函數(shù)只是利用了x的值去運(yùn)算,而未改變x本身的值二、簡(jiǎn)單函數(shù)1、遞歸函數(shù)(可簡(jiǎn)化程序,但時(shí)間和空間需求大)例:階乘一intf(intn)if(n=1)return0;elsereturnn*f(n-1);

7、2、內(nèi)聯(lián)函數(shù)(提高程序執(zhí)行效率,以空間換時(shí)間):inline例:inlineintadd(inta,intb)一只能包含一些簡(jiǎn)單的語(yǔ)句3、系統(tǒng)函數(shù)例:sqrt(2)開(kāi)方,fabs(-9)絕對(duì)值,rand()隨機(jī)函數(shù)4-函數(shù)重載功能相似(1)同名函數(shù),但函數(shù)的參數(shù)類(lèi)型、個(gè)數(shù)或者順序不同(2)函數(shù)的返回值類(lèi)型不能作為函數(shù)重載的區(qū)分條件(3)不能把功能不同的函數(shù)放在一起重載三、其他1、inta就相當(dāng)于autointaauto為自動(dòng)變量,存放于動(dòng)態(tài)存儲(chǔ)區(qū),可省略2、extern外部變量(屬于全局變量),定義在函數(shù)體(包括mian函數(shù))之外一全局壽命3、static靜態(tài)變量(未初始化時(shí),就默認(rèn)為0)有記

8、憶功能(記住上一次運(yùn)行結(jié)果)第四部分一一類(lèi)與對(duì)象一、類(lèi)與對(duì)象的認(rèn)識(shí)1、C+通過(guò)類(lèi)來(lái)實(shí)現(xiàn)封裝2、面向?qū)ο蟪绦蛟O(shè)計(jì)的三個(gè)特征:封裝性、多態(tài)性和繼承性3、在類(lèi)體內(nèi)不能對(duì)數(shù)據(jù)成員進(jìn)行初始化(因?yàn)闆](méi)定義對(duì)象)例:ClassAprivate:intdata=2;錯(cuò)誤二、類(lèi)成員1、private(私有成員)一若開(kāi)頭省略,則默認(rèn)為私有成員,只有該類(lèi)的成員才能進(jìn)行訪問(wèn)私有成員(派生類(lèi)和對(duì)象都不能訪問(wèn))2、protected(保護(hù)成員)一允許派生類(lèi)訪問(wèn),不允許對(duì)象訪問(wèn)3、public(共有成員)一定義了類(lèi)的外部接口,允許派生類(lèi)訪問(wèn),并可以被對(duì)象進(jìn)行調(diào)用4、成員函數(shù)類(lèi)內(nèi)聲明一settime(inta=0,intb=

9、0)類(lèi)外定義一voidClock:settime(inta=0,intb=0)三、對(duì)象1、對(duì)象所占據(jù)內(nèi)存只用于存放數(shù)據(jù)成員(如a、b等),類(lèi)中函數(shù)代碼在內(nèi)存中只占據(jù)一份空間2、訪問(wèn)類(lèi)型:Clockc,*time=&c,貝U有c.showtime()或(*time).showtime或time-showtime()四、構(gòu)造函數(shù)與析構(gòu)函數(shù)1、構(gòu)造函數(shù)一對(duì)象的初始化它是一個(gè)與類(lèi)同名的成員函數(shù),沒(méi)有返回值,定義為公有函數(shù),只能在定義對(duì)象是被系統(tǒng)內(nèi)自動(dòng)調(diào)用類(lèi)中可以有多個(gè)構(gòu)造函數(shù),構(gòu)造函數(shù)可以被重載,可以是內(nèi)聯(lián)函數(shù)(3)帶默認(rèn)參數(shù)的構(gòu)造函數(shù)例:構(gòu)造函數(shù)Clock(inta=0,intb=0)Clockc1

10、,c2(1),c3(1,1)一均是正確的,如c2(1)等價(jià)于c2(1,0)(4)復(fù)制構(gòu)造函數(shù):Clock(Clock&c)例:Clockc1;Clockc2(c1)Clockc2=c1注1:Clock*p不會(huì)調(diào)用構(gòu)造函數(shù)Clock*p=&a由現(xiàn)對(duì)象a,則調(diào)用構(gòu)造函數(shù)注2:Clocka4=c1,c2,c3,c4由于有4個(gè)元素都被類(lèi)定義,故調(diào)用4次構(gòu)造函數(shù),程序結(jié)束時(shí)調(diào)用4次析構(gòu)函數(shù)五、析構(gòu)函數(shù):Clock()()中不能有參數(shù)1、析構(gòu)函數(shù)屬于公有成員,不能重載,但可以是虛函數(shù)2、當(dāng)對(duì)象被刪除或者程序結(jié)束時(shí),自動(dòng)調(diào)用析構(gòu)函數(shù)例:Clock*p=newClocka;deletep申請(qǐng)的空間被刪除,則對(duì)

11、象也消失,故調(diào)用一次析構(gòu)函數(shù)3、一般情況下,調(diào)用幾次構(gòu)造函數(shù),結(jié)束時(shí)就相反順序調(diào)用幾次析構(gòu)函數(shù)六、友元:friend1、實(shí)現(xiàn)不同類(lèi)之間的數(shù)據(jù)共享,但破壞了類(lèi)的封裝性和隱蔽性2、友元函數(shù)一不屬于類(lèi)的成員函數(shù),可以訪問(wèn)類(lèi)的所有成員(包括私有成員)3、友元類(lèi):如ClassAfriendClassB;意味著B(niǎo)類(lèi)是A類(lèi)的友元類(lèi)一B類(lèi)的所有成員函數(shù)都可以訪問(wèn)A類(lèi)的所有成員4、友元關(guān)系不能傳遞且是單向的(A是B的友元函數(shù),但B不是A的友元函數(shù)),友元關(guān)系不會(huì)被繼承七、其他1、this指針:存在于類(lèi)的成員函數(shù)中,用于區(qū)分?jǐn)?shù)據(jù)成員(除靜態(tài)數(shù)據(jù)成員外)2、靜態(tài)成員:static(1)不屬于莫個(gè)對(duì)象,屬于整個(gè)類(lèi)(只

12、能通過(guò)類(lèi)名進(jìn)行訪問(wèn))(2)類(lèi)外初始化,同樣具有記憶功能3、const可用于對(duì)函數(shù)重載的區(qū)分4、類(lèi)別對(duì)象是否可以訪問(wèn)派生類(lèi)是否可以訪問(wèn)private否否protected否是public是是5、類(lèi)別可以重載或內(nèi)聯(lián)數(shù)量是否可以有形參構(gòu)造函數(shù)是析構(gòu)函數(shù)否一或多是一否注:均無(wú)返回類(lèi)型(如int、double),析構(gòu)函數(shù)可以是虛函數(shù)第五部分一一繼承與派生一、繼承1、若省略繼承方式,則默認(rèn)為私有繼承例:ClassA:EB-ClassA:privateB2、派生類(lèi)繼承了基類(lèi)除去構(gòu)造函數(shù)和析構(gòu)函數(shù)之外的全部數(shù)據(jù)成員和函數(shù)成員一派生類(lèi)中也有和基類(lèi)一樣的函數(shù)3、同名覆蓋一派生類(lèi)中的新的同名函數(shù)覆蓋基類(lèi)的函數(shù)4、繼

13、承方式一基類(lèi)中的成員將在派生類(lèi)中有的訪問(wèn)權(quán)限例:ClassB:protectedAA中的成員在派生類(lèi)中的訪問(wèn)權(quán)限是protected(故派生類(lèi)的對(duì)象不能訪問(wèn),派生類(lèi)可以訪問(wèn))注:A中的public和protected在B中的訪問(wèn)權(quán)限都變成protected注1:派生類(lèi)的對(duì)象可以訪問(wèn)基類(lèi)的public注2:即使基內(nèi)的private在派生類(lèi)不可訪問(wèn)卻仍然存在注3:private屬于傳遞一代:protected可以多代傳遞”二、派生1、派生類(lèi)的構(gòu)造函數(shù)和析構(gòu)函數(shù)例:Clock(inta,charb):Point(b)注:派生類(lèi)構(gòu)造函數(shù)既要初始化派生類(lèi)新增的成員,也要為他的基類(lèi)的構(gòu)造函數(shù)傳遞數(shù)據(jù)一引用

14、了基類(lèi)的構(gòu)造函數(shù)(2)派生類(lèi)定義對(duì)象時(shí),構(gòu)造函數(shù)調(diào)用順序:先基類(lèi)一內(nèi)嵌對(duì)象一最后派生類(lèi)例:ClassB:publicApiblic:Aa;故先調(diào)用兩次A的構(gòu)造函數(shù),在調(diào)用B的構(gòu)造函數(shù)一次一析構(gòu)函數(shù)則反向執(zhí)行注:若為多繼承ClassC:publicA,protectedB則順序執(zhí)行A的構(gòu)造函數(shù),再是B的構(gòu)造函數(shù),最后是C的構(gòu)造函數(shù)2、虛基類(lèi)(1)消除多繼承引起的二義性,消除數(shù)據(jù)冗余(2)通過(guò)虛基類(lèi)繼承,最后建立對(duì)象的類(lèi)(稱之為最遠(yuǎn)派生類(lèi)),才調(diào)用虛基函數(shù)的構(gòu)造函數(shù)一保證對(duì)虛基類(lèi)的對(duì)象只初始化一次三、其他1、若基類(lèi)的構(gòu)造函數(shù)有默認(rèn)值,則派生類(lèi)就不必給基類(lèi)傳遞數(shù)據(jù)例:ClassAA(intx=1);

15、ClassBB(inty=1)卜而不必寫(xiě)成ClassBB(inty,intx):A(x)2、積累與派生類(lèi)的賦值兼容(1)派生類(lèi)的對(duì)象可以賦值給基類(lèi)對(duì)象一就是派生類(lèi)將基類(lèi)的那部分賦值給基類(lèi)一反之不行(2)同一基類(lèi)的不同派生類(lèi)對(duì)象不能相互賦值(只是交集,不是包含關(guān)系)總結(jié):派生類(lèi)可以對(duì)基類(lèi)進(jìn)行操作一即(基類(lèi))二(派生類(lèi))的操作是對(duì)的,反之都是錯(cuò)的例:ClassAClassB:publicAAa;Bb;a=b(X)b=a(錯(cuò)誤)3、判斷是否可以訪問(wèn)類(lèi)別基本身派生類(lèi)派生類(lèi)的對(duì)象基的私有成員是否否基的保護(hù)成員是是否基的公有成員是是是第六部分一一多態(tài)性、編譯時(shí)的多態(tài):函數(shù)重載、運(yùn)算符重載運(yùn)行時(shí)的多態(tài):虛函

16、數(shù)二、運(yùn)算符重載:operator1-成員函數(shù)=、口、()、一(這些只能為成員函數(shù))例:加法一類(lèi)中聲明:Complexoperator+(Complex&c)類(lèi)夕卜定義:Complex:Complexoperator+(Complex&c)函數(shù)的實(shí)現(xiàn):c3=c1+c2注:成員函數(shù)隱藏一個(gè)this指針,故參數(shù)比非成員函數(shù)少一個(gè)2、非成員函數(shù):friend函數(shù)返回值類(lèi)型operator運(yùn)算符(形參表)例:friendComplexoperator+(Complex&c1,Complex&c2)注:和只能重載為非成員函數(shù)3、規(guī)則和限制只能對(duì)已有的c+運(yùn)算符進(jìn)行重載例:ab、+則是非法的(2)下列運(yùn)算

17、符不能重載.(成員運(yùn)算符)、*、:、?:、sizeof重載不改變運(yùn)算符的優(yōu)先級(jí)、結(jié)構(gòu)、操作個(gè)數(shù)一只改變功能(4)重載函數(shù)不能有默認(rèn)參數(shù),且必須至少有一個(gè)類(lèi)的對(duì)象例1:Complexoperator+(Complex&c=2)不合法例2:Complexoperator+(int&c)至少一個(gè)Complex類(lèi)對(duì)象(5)operator=(無(wú)形參)一前綴一元運(yùn)算符(6)對(duì)于+a,重載為成員函數(shù)一a.operater+()重載為非成員函數(shù)一operator+(a)對(duì)于a+,重載為成員函數(shù)一a.operater+(0)重載為非成員函數(shù)一operator+(a,0)注1:可知,成員函數(shù)的形參比非成員函數(shù)少一個(gè)(this的作用)注2:莫一填空題一boolBounceoperator!(Bounce)三、虛函數(shù)1、例:Aa,*p;B一則基類(lèi)對(duì)象的指針在指向派生類(lèi)時(shí),只會(huì)指向派生類(lèi)中的基類(lèi)部分(誰(shuí)定義你,你就只與誰(shuí)有關(guān))虛函數(shù)可以使基類(lèi)中的函數(shù)”隱藏起來(lái)”,從而使指針指向派生類(lèi)的同名函數(shù)2、只有類(lèi)的成員函數(shù)才能是虛函數(shù)(構(gòu)造函

溫馨提示

  • 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)論