版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、第一部分簡單的程序設(shè)計、標(biāo)識符(包括變量名命名規(guī)則)1、定義:由數(shù)字、大小寫字母和下劃線組成 2、例子:)、 _ab、a+b (不能有+)合法: Int (大小寫不一樣,不是關(guān)鍵字 int不合法:new和friend (不能與關(guān)鍵字相同)2b (開頭不能是數(shù)字)、基本數(shù)據(jù)類型存儲空間位數(shù)存儲形式double64補碼int32補碼float32補碼charASCII 碼特殊:指針 *p固定為long int 類型)string16(固定大?。┳?1 :精度低 自動轉(zhuǎn)換 精度高注 2:int a;a=8/3 a=2(int 整型 )三、常量與變量1、八進制 正負(fù)號和 0開頭,例: 012、-057
2、十六進制 正負(fù)號和 0x 或 0X 開頭,例: 0x34、 -0X68 2、字符常量1)普通字符: A、0、#、 (空格)2)轉(zhuǎn)義字符: n、 (表示) 、0(3) a 一個字節(jié),“ a”一 兩個字節(jié)(包括 /0 ),長度為1 注: ddd 表示八進制字符xdd 表示十六進制字符例: strlen( “abc1200a s0d ” )和 sizeof( “abc1200a sd ” )的值分析 1:其中有 a、b、c、 、120( 八進制 ) 、0(碰到第一個則終止, 且不計入長度), 所以結(jié)果為 5 分析2:算上所有的字符(包括0 ,注意有個空格在a與s之間),結(jié)果為11 (char字 符占
3、一個字節(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=6int i=5,c;c=+i;c=6;i=62、賦值運算符1)區(qū)分“ =”和“ =”3、關(guān)系運算符和邏輯運算符1)結(jié)果總為 1或 0例 1:t=54 t=(54) 54為真,則結(jié)果為 1t 的值為 1
4、例 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 語句),default 至多一個。例: switch (a)case 1:cout A;break;case
5、 2:cout Bcase 3:cout C;break;若輸入a=2,則輸出的結(jié)果為BC程序從第二個開始執(zhí)行,因為沒有break跳出當(dāng)前程序, 會繼續(xù)執(zhí)行下面的程序 , 直到 break 跳出等。4、for 循環(huán):注意是否會無限循環(huán)(循環(huán)條件的正確性)例: for(int x=0;x無限循環(huán) 六、補充1、continue 跳過剩余語句(繼續(xù)循環(huán),不會跳出)2、const int a=5a的值不會再變(即a=6 錯誤)3、運算符優(yōu)先級邏輯運算符(! &| )條件運算符 (A?B:C) 值運算符 (=、+=、*=) 4、條件運算符 A?B:C例:54?3:2 若 A為真,則輸出B,否則輸出C,所
6、以答案為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 型的 注:a(5) a=5,上述數(shù)組最后一個元素為 a19193、部分初始化: a5=1,2,3a5=1,2,3,0,0、指針1 、 * 取內(nèi)容, & 取地址或 p=a)int a5=0 , *p , p=&a0(取出 a 中的首地址 ( 即 a0) 放在 p 中,則 p 中所存內(nèi)容就是 a0 的首地址 (*p 即讀取 p 中地址的內(nèi)容 就是 a0)(1)
7、 coutp 本身的首地址coutvv&p 取 p中所存的地址,再輸出一a的首地址 cout取 P所存首地址的內(nèi)容一 輸出a0 (4)cout指針往后移動一位 輸出 a1注: *(p+) *(p+1)2、動態(tài)內(nèi)存分配(1) int *p=new floatN 一維數(shù)組(這里 N 為變量) 二維數(shù)組rv和r )共用內(nèi)存int (*p)4=new float34最后 delete p三、引用1、int r,&rv=r 別名與目標(biāo)名(即2、類型必須一致,必須立即初始化(int &rv; 錯誤)例:int a;double &b=a; 錯誤3、不能中途換名例: int a,c;int &b=a,&c=
8、b;錯誤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= ” 12345”一 錯誤(必須有一個位置放0 )2、String(1)string a= ” man” ,b=” kind ” ;a1= ea=” men” 可以當(dāng)作數(shù)組看(2)(3)
9、可以相互賦值: a=ba=” kind ”可以連接: c=a+b c=” mankind”注: (2) 和(3) 都是 char 字符型數(shù)組所不能實現(xiàn)的 例: char a5= ” c+” ,b6= ” hello ” ;a=b; 錯誤 五、其他類型1 、枚舉類型: enum例: enum seasoon spring,summer,autumn,winter;season s=winter s=3;分析: spring 相當(dāng)于 0,后面逐次遞增 ( 可以對 spring 進行默認(rèn)值設(shè)定,令 spring=1 ,后 面依次遞增 ) 2、結(jié)構(gòu)體: struct 類比 類與對象3、共用體: uni
10、on注:若干個成員中,其中占用內(nèi)存最大的,作為共用體類型的大小(不是相加)例:union aint x;char s; 顯然占4個字節(jié)(int), 而不是char的1個字節(jié) 六、補充1、char name20 coutname 輸出為字符數(shù)組的內(nèi)容int n ame20 cout 輸出首地址2、char *p= ”hello ”( 類比數(shù)組 )(1) couth(2) couthellocoutvv p+1 ello 指針向后移動一位,指向e,再輸出后面的內(nèi)容 3、strcmp(s1,s2) 進行大小比較Strcpy(s1,s2) s1=s2(將 s2 的內(nèi)容賦給 s1)S=strcat(s1
11、,s2)將 s1 與 s2 的內(nèi)容進行連接,再給 S第三部分函數(shù)、認(rèn)識函數(shù)1、聲明: int add(int a,int b);形參不占用空間,可省略為int add(int,int);( 注 意要有” ; ”)調(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、有默認(rèn)值的形參右邊都要有默認(rèn)值例: int(int a,int b=0)合法int(int a=0,int b)不合法5、引用傳遞: swap(int
12、&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)函數(shù)例: sqrt(2) 開方, fabs(-9) 絕對值, rand() 隨機函數(shù)4、函數(shù)重載功能相似 (1) 同名函數(shù),但函數(shù)的參數(shù)類型、個數(shù)或者順序不同(
13、2) 函數(shù)的返回值類型不能作為函數(shù)重載的區(qū)分條件(3) 不能把功能不同的函數(shù)放在一起重載 三、其他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+通過類來實現(xiàn)封裝 2、面向?qū)ο蟪绦蛟O(shè)計的三個特征: 封裝性、多態(tài)性 和繼承性3、在類體內(nèi)不能對數(shù)據(jù)成員進行初始化 ( 因為沒定義對象 )例: Class Apr
14、ivate:int data=2;錯誤、類成員1、private( 私有成員) 若開頭省略,則默認(rèn)為私有成員, 只有該類的成員才能進行訪問 私有成員 ( 派生類和對象都不能訪問 ) 2、protected( 保護成員 ) 允許派生類訪問 , 不允許對象訪問 類外定義 void Clock :3、public( 共有成員 ) 定義了類的外部接口,允許派生類訪問,并可以被對象進行調(diào)用4、成員函數(shù)類內(nèi)聲明 settime(int a=0,int b=0) settime(int a=0,int b=0)三、對象1、對象所占據(jù)內(nèi)存只用于存放數(shù)據(jù)成員 (如 a、b 等) ,類中函數(shù)代碼在內(nèi)存中只占據(jù)一份
15、 空間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)Clock c1,c2(1),c3(1,1) 均是正確的,如c2(1) 等價于 c2(1,0)(4) 復(fù)制構(gòu)造函數(shù): Clock(Clock
16、&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ù) 五、析構(gòu)函數(shù): Clock() () 中不能有參數(shù)1、析構(gòu)函數(shù)屬于公有成員,不能重載,但可以是虛函數(shù) 2、當(dāng)對象被刪除或者程序結(jié)束時,自動調(diào)用析構(gòu)函數(shù)例: Clock *p=new Clock a;delete p申請的空間被刪除,則對象也消失,故調(diào)用一 次析構(gòu)函數(shù)3、一般情況下,調(diào)用幾次
17、構(gòu)造函數(shù),結(jié)束時就相反順序調(diào)用幾次析構(gòu)函數(shù)六、友元: friend 1、實現(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 指針:存在于類的成員函數(shù)中,用于區(qū)分?jǐn)?shù)據(jù)成員( 除靜態(tài)數(shù)據(jù)成員外 )2、靜態(tài)成員: static(1) 不屬于某個對象,屬于整個類 (只能通過類名進行訪
18、問(2) 類外初始化,同樣具有”記憶功能”3、const 可用于對函數(shù)重載的區(qū)分4、類別對象是否可以訪問 派生類是否可以訪問privateprotectedpublic5、類別可以重載或內(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:private B 2、派生類繼承了基類除去 構(gòu)造函數(shù) 和析構(gòu)函數(shù) 之外的全部數(shù)據(jù)成員和函數(shù)成員 派生類中也有和基類一樣的函數(shù)3、同名覆蓋 派生類中的新的同名函數(shù)覆蓋基類的函數(shù) 4、繼承方式
19、基類中的成員將在派生類中有的訪問權(quán)限例:Class B:protected A A中的成員在派生類中的訪問權(quán)限是protected(故派生類的對象不能訪問 , 派生類可以訪問 )注:A中的public 和Protected 在B中的訪問權(quán)限都變成 protected注 1:派生類的對象可以訪問基類的 public注 2:即使基內(nèi)的 private 在派生類不可訪問卻仍然存在注 3: private 屬于”傳遞一代” ,protected 可以”多代傳遞”、派生1、派生類的構(gòu)造函數(shù)和析構(gòu)函數(shù) (1) 例: Clock(int a,char b):Point(b)注:派生類構(gòu)造函數(shù)既要初始化派生類
20、新增的成員,也要為他的基類的構(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的構(gòu)造函數(shù)2、虛基類 (1) 消除多繼承引起的二義性,消除數(shù)據(jù)冗余(2) 通過虛基類繼承, 最后建立對象的類 ( 稱之為最遠(yuǎn)派生類 ) ,才調(diào)用虛基函數(shù)的構(gòu)造函數(shù) 保證對虛基類的對象只初始化一次 三
21、、其他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é):派生類可以對基類進行操作 即(基類)=( 派生類)的操作是對的,反之都是錯的例: Class A Class B:public AA a;B b;a=b(對)一b=a(錯誤)3、判斷是否可以訪問類別基本身派生
22、類派生類的對象是否否基的保護成員是是否基的公有成員是是是基的私有成員第六部分多態(tài)性、編譯時的多態(tài):函數(shù)重載、運算符重載運行時的多態(tài):虛函數(shù)二、運算符重載: 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)注:”和”只改變功能(4)
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 共振音叉課件教學(xué)課件
- 電商物流解決方案
- 糖尿病的自我監(jiān)測與管理
- 無人駕駛汽車的發(fā)展前景
- 食管癌晚期治療進展
- 糖尿病治療儀使用
- 初中化學(xué)常見氣體的制取專題教案
- 角膜病病人的護理
- 海上日出說課稿第課時
- 重癥急性胰腺炎手術(shù)治療
- MOOC 中國文化概論-華南師范大學(xué) 中國大學(xué)慕課答案
- 密封條范文模板(A4打印版)
- 診所消防應(yīng)急專項預(yù)案
- 公需課答案-法治建設(shè)與國家治理現(xiàn)代化
- 施工升降機安裝拆除安全交底 LJA-C4-1-1
- 小學(xué)語文 四年級上冊 《第二單元》作業(yè)設(shè)計
- 中考語文高效復(fù)習(xí)知識講座
- 青春期性教育培訓(xùn)課件
- 酒精擦浴護理
- 美容市場策劃方案
- 研發(fā)部年度工作計劃
評論
0/150
提交評論