c++期末總復(fù)習(xí)-精華篇_第1頁
c++期末總復(fù)習(xí)-精華篇_第2頁
c++期末總復(fù)習(xí)-精華篇_第3頁
c++期末總復(fù)習(xí)-精華篇_第4頁
c++期末總復(fù)習(xí)-精華篇_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

2、號和 0 開頭,例: 012、 -057十六進(jìn)制 正負(fù)號和0x 或 0X 開頭,例: 0x34、 -0X681 / 17.2、字符常量(1)普通字符: A、 0、 #、 (空格)(2)轉(zhuǎn)義字符: n 、(表示 ) 、0 (3) a 一個字節(jié),“a” 兩個字節(jié)(包括/0),長度為 1注: ddd 表示八進(jìn)制字符xdd 表示十六進(jìn)制字符例: strlen( “abc1200a s0d”)和 sizeof(“abc1200a sd ”)的值分析 1:其中有 a、b、c、 、 120( 八進(jìn)制 )、 0 (碰到第一個則終止,且不計入長度) ,所以結(jié)果為 5分析 2:算上所有的字符(包括0 ,注意有個空

3、格在a 與s 之間),結(jié)果為 11( char 字符占一個字節(jié))3、指數(shù): 2e-6、-1.5E2(結(jié)尾加一個f(F),表示結(jié)果為float 型 )注: e(E)后(即指數(shù) )必須是整數(shù)四、運算符和表達(dá)式1、算術(shù)運算符+、 -、 / (不是)、* (不可省略)、 %(取余)注 1:+()、-(),其中()中必須是變量,不能是常量和表達(dá)式例: 5+、( a+b)+、 +(2*i )不合法注 2: int i=5 ,b; b=i+; b=5; i=62 / 17.int i=5 , c; c=+i; c=6;i=62、賦值運算符( 1)區(qū)分“ =”和“ =”( 2) a+=b a=a+b3、關(guān)系運

4、算符和邏輯運算符(1)結(jié)果總為1 或 0例 1:t=54t=(54)54 為真,則結(jié)果為 1 t 的值為 1例 2: a=1&2 a=(1!=0)&(2!=0) a=1(& 運算優(yōu)先級高 )4、逗號運算符:表達(dá)式結(jié)果為最后一個逗號后的結(jié)果例: a=3*5,a+5 表達(dá)式結(jié)果為20五、語句1、 if(a) if(a!=0)2、 do whlie 語句 至少執(zhí)行一次例: do int i=1;j=0while(a=b)分析:先循環(huán)一次, 由于條件為i=j (i=bj)!=0(不是 a=b),則結(jié)果是無限循環(huán)3、 switch 語句不一定每個case 后都有 break(跳出當(dāng)前循環(huán)語句,而不是if

5、 語句), default 至多一個。例: switch ( a) case 1:coutA;break;case 2:coutBcase 3:coutC;break;若輸入 a=2,則輸出的結(jié)果為BC,程序從第二個開始執(zhí)行,3 / 17.因為沒有 break 跳出當(dāng)前程序,會繼續(xù)執(zhí)行下面的程序,直到break 跳出等。4、 for 循環(huán):注意是否會無限循環(huán)(循環(huán)條件的正確性)例: for(int x=0;x無限循環(huán)六、補(bǔ)充1、 continue 跳過剩余語句(繼續(xù)循環(huán),不會跳出)2、 const int a=5 a 的值不會再變 (即 a=6錯誤 )3、運算符優(yōu)先級邏輯運算符(!&| ) 條

6、件運算符 (A?B:C) 值運算符 (=、+=、 *=)4、條件運算符A?B:C例: 54?3:2 若 A 為真,則輸出B,否則輸出 C,所以答案為 3第二部分構(gòu)造數(shù)據(jù)類型一、數(shù)組1、數(shù)組下標(biāo)只能是常量(an 、 a 不合法)2、 int a2020 數(shù)組未初始化,則元素的值不確定(除了靜態(tài)數(shù)組未初始化時,默認(rèn)是0)int a2020=0 元素全部為0,且每個元素都必須是int型的4 / 17.注: a(5)a=5,上述數(shù)組最后一個元素為a19193、部分初始化: a5=1,2,3 a5=1,2,3,0,0 二、指針1、 * 取內(nèi)容, & 取地址int a5=0 , *p , p=&a0( 或

7、 p=a)取出 a 中的首地址 (即 a0)放在 p 中,則 p 中所存內(nèi)容就是 a0 的首地址 (*p 即讀取 p 中地址的內(nèi)容 就是 a0)(1)coutp 本身的首地址(2)cout取 p 中所存的地址,再輸出a 的首地址(3)cout取 p 所存首地址的內(nèi)容輸出 a0(4)cout指針往后移動一位輸出 a1注: *(p+) *(p+1)2、動態(tài)內(nèi)存分配(1)int *p=new floatN 一維數(shù)組(這里N 為變量)int (*p)4=new float34 二維數(shù)組最后 delete p三、引用1、 int r,&rv=r 別名與目標(biāo)名(即rv 和 r)共用內(nèi)存2、類型必須一致,必

8、須立即初始化(int &rv; 錯誤)例: int a;double &b=a; 錯誤3、不能中途換名例: int a,c;int &b=a,&c=b; 錯誤5 / 17.4、數(shù)組引用 :int a5=0;(&rv)5=a ;四、字符串1、 char s20=”c+程序設(shè)計 ”,*p=s ;(1)sizeof(s)一共可存放20 個元素,每個都是char(占一個字節(jié) ) 結(jié)果為 20(2)sizeof(p) p 是指針,一定為4 個字節(jié) 結(jié)果為 4(3)Strlen(s)”c+”為三個字節(jié), ”程序設(shè)計 ”(漢字是兩個字節(jié) ) 為 8 個字節(jié) (不含 0 ) 結(jié)果為 11注: char a5=

9、 ”12345” 錯誤(必須有一個位置放0 )2、 String(1) string a=”man”,b=”kind”; a1=e a=”men”可以當(dāng)作數(shù)組看(2) 可以連接: c=a+bc=”mankind ”(3) 可以相互賦值: a=ba=”kind ”注: (2)和(3)都是 char 字符型數(shù)組所不能實現(xiàn)的例: char a5= ”c+”,b6= ”hello ”;a=b; 錯誤五、其他類型1、枚舉類型: enum例: enum seasoon spring,summer,autumn,winter;season s=winters=3;分析: spring 相當(dāng)于 0,后面逐次遞

10、增 (可以對 spring 進(jìn)行默認(rèn)值設(shè)定,令 spring=1,后面依次遞增 )6 / 17.2、結(jié)構(gòu)體: struct 類比類與對象3、共用體: union注:若干個成員中,其中占用內(nèi)存最大的,作為共用體類型的大小(不是相加)例: union aint x;char s; 顯然占 4 個字節(jié) (int), 而不是 char的 1 個字節(jié)六、補(bǔ)充1、 char name20 cout輸出為字符數(shù)組的內(nèi)容int name20 cout輸出首地址2、 char *p= ”hello ”(類比數(shù)組 )(1)couth(2)couthello(3)coutello 指針向后移動一位,指向e,再輸出后

11、面的內(nèi)容3、 strcmp(s1,s2) 進(jìn)行大小比較Strcpy(s1,s2) s1=s2(將 s2 的內(nèi)容賦給s1)S=strcat(s1,s2) 將 s1 與 s2 的內(nèi)容進(jìn)行連接,再給S第三部分函數(shù)一、認(rèn)識函數(shù)1、聲明: int add(int a,int b);形參不占用空間,可省略為int add(int,int);( 注意要有 ”;”)7 / 17.調(diào)用: z=add(a,b) a,b 均為實參 (有內(nèi)容 )例:z=swap(a+b,max(c),v)swap 函數(shù)實參為3 個 (兩個逗號 )2、 c+的程序總是從main 函數(shù)開始執(zhí)行的3、函數(shù)不允許嵌套定義,但是可以相互調(diào)用4

12、、有默認(rèn)值的形參右邊都要有默認(rèn)值例: int(int a,int b=0) 合法int(int a=0,int b) 不合法5、引用傳遞: swap(int &x); x 的值與函數(shù)結(jié)果有關(guān)swap(int x); swap 函數(shù)只是利用了x 的值去運算,而未改變 x 本身的值二、簡單函數(shù)1、遞歸函數(shù) (可簡化程序,但時間和空間需求大)例:階乘 int f(int n)if(n=1)return0;else return n*f(n-1);2、內(nèi)聯(lián)函數(shù) (提高程序執(zhí)行效率,以空間換時間): inline例: inline int add(int a,int b) 只能包含一些簡單的語句3、系統(tǒng)

13、函數(shù)例: sqrt(2) 開方, fabs(-9) 絕對值, rand() 隨機(jī)函數(shù)4、函數(shù)重載功能相似(1)同名函數(shù),但函數(shù)的參數(shù)類型、個數(shù)或者順序不同(2)函數(shù)的返回值類型不能作為函數(shù)重載的區(qū)分條件(3)不能把功能不同的函數(shù)放在一起重載三、其他8 / 17.1、 int a 就相當(dāng)于 auto int a auto 為自動變量, 存放于動態(tài)存儲區(qū),可省略2、 extern 外部變量 (屬于全局變量),定義在函數(shù)體(包括mian 函數(shù) )之外 全局壽命3、 static靜態(tài)變量 (未初始化時,就默認(rèn)為0) 有記憶功能(記住上一次運行結(jié)果)第四部分類與對象一、類與對象的認(rèn)識1、 c+通過 類來

14、實現(xiàn)封裝2、面向?qū)ο蟪绦蛟O(shè)計的三個特征:封裝性 、多態(tài)性 和繼承性3、在類體內(nèi)不能對數(shù)據(jù)成員進(jìn)行初始化(因為沒定義對象)例: Class Aprivate:int data=2; 錯誤二、類成員1、 private( 私有成員 ) 若開頭省略, 則默認(rèn)為私有成員,只有該類的成員才能進(jìn)行訪問私有成員(派生類和對象都不能訪問 )2、 protected( 保護(hù)成員 ) 允許派生類訪問,不允許對象訪問3、 public( 共有成員 ) 定義了類的外部接口,允許派生類訪問,并可以被對象進(jìn)行調(diào)用9 / 17.4、成員函數(shù)類內(nèi)聲明settime(int a=0,int b=0) 類外定義 void Clo

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

16、lock c1,c2(1),c3(1,1)均是正確的,如 c2(1)等價于 c2(1,0)(4)復(fù)制構(gòu)造函數(shù):Clock(Clock &c)例: Clock c1;Clock c2(c1) Clock c2=c1注 1: Clock *p 不會調(diào)用構(gòu)造函數(shù)Clock *p=&a 出現(xiàn)對象 a,則調(diào)用構(gòu)造函數(shù)注 2:Clock a4=c1,c2,c3,c4 由于有 4 個元素都被類定義,故調(diào)用 4 次構(gòu)造函數(shù),程序結(jié)束時調(diào)用4 次析構(gòu)函數(shù)10 / 17.五、析構(gòu)函數(shù):Clock() ()中不能有參數(shù)1、析構(gòu)函數(shù)屬于公有成員,不能重載,但可以是虛函數(shù)2、當(dāng)對象被刪除或者程序結(jié)束時,自動調(diào)用析構(gòu)函數(shù)

17、例:Clock *p=new Clock a;delete p 申請的空間被刪除,則對象也消失,故調(diào)用一次析構(gòu)函數(shù)3、一般情況下,調(diào)用幾次構(gòu)造函數(shù),結(jié)束時就相反順序調(diào)用幾次析構(gòu)函數(shù)六、友元: friend1、實現(xiàn)不同類之間的數(shù)據(jù)共享,但破壞了類的封裝性和隱蔽性2、友元函數(shù) 不屬于類的成員函數(shù),可以訪問類的所有成員(包括私有成員 )3、友元類:如Class A.friend Class B;. 意味著 B 類是 A類的友元類 B 類的所有成員函數(shù)都可以訪問A 類的所有成員4、友元關(guān)系不能傳遞且是單向的(A 是 B 的友元函數(shù),但B不是 A 的友元函數(shù) ),友元關(guān)系不會被繼承七、其他1、 this

18、 指針:存在于類的成員函數(shù)中, 用于區(qū)分?jǐn)?shù)據(jù)成員 (除靜態(tài)數(shù)據(jù)成員外 )2、靜態(tài)成員: static(1)不屬于某個對象,屬于整個類(只能通過類名進(jìn)行訪問)11 / 17.(2)類外初始化,同樣具有”記憶功能 ”3、 const 可用于對函數(shù)重載的區(qū)分4、類別對象是否可以訪問派生類是否可以訪問private否否protected否是public是是5、類別可以重載或內(nèi)聯(lián)數(shù)量是否可以有形參構(gòu)造函數(shù)是一或多是析構(gòu)函數(shù)否一否注:均無返回類型 (如 int 、double), 析構(gòu)函數(shù)可以是虛函數(shù)第五部分繼承與派生一、繼承1、若省略繼承方式,則默認(rèn)為私有繼承例: Class A:B Class A:p

19、rivate B2、派生類繼承了基類除去 構(gòu)造函數(shù) 和析構(gòu)函數(shù) 之外的全部數(shù)據(jù)成員和函數(shù)成員 派生類中也有和基類一樣的函數(shù)3、同名覆蓋 派生類中的新的同名函數(shù)覆蓋基類的函數(shù)4、繼承方式 基類中的成員將在派生類中有的訪問權(quán)限例:Class B:protected A A 中的成員在派生類中的訪問權(quán)限是 protected( 故派生類的對象不能訪問,派生類可以訪問)12 / 17.注: A 中的public 和 protected在 B 中的訪問權(quán)限都變成protected注 1:派生類的對象可以訪問基類的public注 2:即使基內(nèi)的 private 在派生類不可訪問卻仍然存在注 3: priv

20、ate 屬于 ”傳遞一代 ”,protected 可以 ”多代傳遞 ” 二、派生1、派生類的構(gòu)造函數(shù)和析構(gòu)函數(shù)(1)例: Clock(int a,char b):Point(b)注:派生類構(gòu)造函數(shù)既要初始化派生類新增的成員,也要為他的基類的構(gòu)造函數(shù)傳遞數(shù)據(jù)引用了基類的構(gòu)造函數(shù)(2)派生類定義對象時,構(gòu)造函數(shù)調(diào)用順序:先基類內(nèi)嵌對象 最后派生類例: Class B:public Apiblic:A a;故先調(diào)用兩次A 的構(gòu)造函數(shù),在調(diào)用B 的構(gòu)造函數(shù)一次析構(gòu)函數(shù)則反向執(zhí)行注:若為多繼承Class C:public A,protected B 則順序執(zhí)行A的構(gòu)造函數(shù),再是B 的構(gòu)造函數(shù),最后是C

21、的構(gòu)造函數(shù)2、虛基類(1)消除多繼承引起的二義性,消除數(shù)據(jù)冗余(2)通過虛基類繼承, 最后建立對象的類(稱之為最遠(yuǎn)派生類),才調(diào)用虛基函數(shù)的構(gòu)造函數(shù)保證對虛基類的對象只初始化一次三、其他13 / 17.1、若基類的構(gòu)造函數(shù)有默認(rèn)值,則派生類就不必給基類傳遞數(shù)據(jù)例: Class AA(int x=1);Class BB(int y=1) 而不必寫成Class BB(int y,int x):A(x)2、積累與派生類的賦值兼容(1)派生類的對象可以賦值給基類對象就是派生類將基類的那部分賦值給基類反之不行(2)同一基類的不同派生類對象不能相互賦值(只是交集,不是包含關(guān)系 )總結(jié):派生類可以對基類進(jìn)行

22、操作即(基類 )=(派生類 )的操作是對的,反之都是錯的例: Class AClass B:public AA a;B b;a=b(對) b=a(錯誤 )3、判斷是否可以訪問類別基本身派生類派 生 類 的 對 象基的私有成員是否否基的保護(hù)成員是是否基的公有成員是是是第六部分多態(tài)性一、編譯時的多態(tài):函數(shù)重載、運算符重載運行時的多態(tài):虛函數(shù)14 / 17.二、運算符重載:operator1、成員函數(shù)=、 、()、 (這些只能為成員函數(shù))例:加法 類中聲明 :Complex operator+(Complex&c) 類外定義: Complex:Complex operator+(Complex &c) 函數(shù)的實現(xiàn): c3=c1+c2注:成員函數(shù)隱藏一個this 指針 ,故參數(shù)比非成員函數(shù)少一個2、非成員函數(shù): friend函數(shù)返回值類型operator 運算符 (形參表 )例: friend Complex operator+(Complex &c1,Complex &c2)注: ”和

溫馨提示

  • 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

提交評論