




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、優(yōu)質(zhì)文本第一章 概論C+程序的根本元素:關(guān)鍵字、標(biāo)識(shí)符、運(yùn)算符、標(biāo)點(diǎn)符號(hào)1.1算法、程序和語(yǔ)言1.1.1算法和程序算法:對(duì)數(shù)據(jù)處理操作的步驟。1.1.2低級(jí)語(yǔ)言和高級(jí)語(yǔ)言機(jī)器語(yǔ)言:由二進(jìn)制碼組成的指令。匯編語(yǔ)言:用助記符來(lái)表示每一條機(jī)器指令。高級(jí)語(yǔ)言:與人類(lèi)習(xí)慣語(yǔ)言相近的程序設(shè)計(jì)語(yǔ)言。1.2面向過(guò)程和面向?qū)ο蟮某绦蛟O(shè)計(jì)1.2.1面向過(guò)程的程序設(shè)計(jì)1.2.2面向?qū)ο蟮某绦蛟O(shè)計(jì)1.3C+程序的寫(xiě)出和運(yùn)行1.3.1C+程序簡(jiǎn)例main是主函數(shù)。程序總是從main函數(shù)開(kāi)始執(zhí)行。原型:main(int argc,char *argv)標(biāo)識(shí)符:給變量等實(shí)體所取的名字統(tǒng)稱(chēng)為標(biāo)識(shí)符,只能以下劃線或字母開(kāi)頭關(guān)鍵
2、字:C+中具有特定含義的詞語(yǔ)句:程序中語(yǔ)句要用“;結(jié)尾,分號(hào)是語(yǔ)句的組成局部。1.3.2C+程序從寫(xiě)出到運(yùn)行幾個(gè)步驟源程序(.cpp):用C+語(yǔ)言寫(xiě)出的程序。程序代碼(.obj):源程序經(jīng)過(guò)編譯程序翻譯,成為用機(jī)器語(yǔ)言表示的目標(biāo)程序??蓤?zhí)行文件.exe:把各個(gè)相關(guān)文件鏈接起來(lái)形成的文件。第二章 根本數(shù)據(jù)、別名和指針2.1根本數(shù)據(jù)數(shù)據(jù)是程序處理的對(duì)象而存儲(chǔ)于內(nèi)存空間中。存間的大小與數(shù)據(jù)類(lèi)型有關(guān),數(shù)據(jù)類(lèi)型分為根本數(shù)據(jù)類(lèi)型和導(dǎo)出數(shù)據(jù)類(lèi)型2.1.1根本數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型:根本數(shù)據(jù)類(lèi)型、導(dǎo)出數(shù)據(jù)類(lèi)型根本數(shù)據(jù)類(lèi)型:字符型、整型、實(shí)型、雙精度型、無(wú)值型導(dǎo)出數(shù)據(jù)類(lèi)型:數(shù)組、指針、結(jié)構(gòu)體、共用體、類(lèi)、枚舉整型:計(jì)
3、算機(jī)內(nèi)部是以二進(jìn)制補(bǔ)碼形式表示字符型:ASII碼有128個(gè)字符,0-31和128為不可見(jiàn)字符控制字符浮點(diǎn)型:小數(shù)形式、指數(shù)形式數(shù)據(jù)類(lèi)型存間字節(jié)長(zhǎng)度位取值范圍字符char18-128127unsigned char180225整數(shù)短整型short216-3276832767Unsigned short216065535整型int432-231231-1Unsigned int4320232-1長(zhǎng)整型long432-231231-1Unsigned long4320232-1實(shí)數(shù)float432 -3.4×10-383.4×1038Double864 -1.7×10-
4、3081.7×10308Long double864 -1.7×10-3081.7×103082.1.2數(shù)據(jù)變量的存間、長(zhǎng)度和取值范圍數(shù)據(jù)變量的存間:儲(chǔ)存變量的內(nèi)存空間。整數(shù)存儲(chǔ)安置規(guī)那么:變量值的高位字節(jié)存于高地址的內(nèi)存單元中,低位字節(jié)存于低地址的內(nèi)存單元中。存間長(zhǎng)度運(yùn)算符:sizeof某變量類(lèi)型變量的長(zhǎng)度:變量的字節(jié)數(shù)×8=變量值的二進(jìn)制位數(shù)。2.1.3數(shù)據(jù)變量的表示整數(shù)的表示:八進(jìn)制:以0開(kāi)頭。十六進(jìn)制:以0x或0X開(kāi)頭后綴L或l為long型;后綴U或u為unsigned int型;同時(shí)后綴L和U為unsigned long型。實(shí)數(shù)的表示一般形式:
5、科學(xué)計(jì)數(shù)法:0.75e+9表示0.75×109,小數(shù)點(diǎn)前留一位為標(biāo)準(zhǔn)科學(xué)計(jì)數(shù)法;E可大寫(xiě)可小寫(xiě),前后必須有數(shù)字。后綴F或f為float型,無(wú)后綴默認(rèn)為double型。字符的表示:對(duì)于可以通過(guò)鍵盤(pán)輸入的、可顯示的字符,可用單引號(hào)闊氣來(lái);對(duì)于不可以通過(guò)鍵盤(pán)輸入的,不可顯示的字符,用轉(zhuǎn)義字符;對(duì)ASCII碼中任一字符,都可用反斜杠后跟一個(gè)八進(jìn)制或十六進(jìn)制數(shù)用單引號(hào)括起來(lái)表示101和x41都表示字符A。字符可以對(duì)整型變量賦值,ASCII碼范圍內(nèi)的整數(shù)也可以對(duì)字符型變量賦值,字符進(jìn)行運(yùn)算時(shí),以其ASCII碼值參與運(yùn)算。2.1.4字符串常量及其值字符串常量是用一對(duì)英文雙引號(hào)括起來(lái)的不可改變的字符
6、序列。2.1.5數(shù)據(jù)變量的聲明和賦值2.1.6數(shù)據(jù)變量的訪問(wèn)2.2別名2.2.1別名變量概念2.2.2別名變量的聲明2.2.3用別名對(duì)變量進(jìn)行訪問(wèn)2.3指針2.3.1地址概念2.3.2指針變量概念2.3.3指針變量的聲明和賦值2.3.4用指針對(duì)變量進(jìn)行訪問(wèn) C+動(dòng)態(tài)內(nèi)存分配:new 類(lèi)型名(初始值列表)/開(kāi)辟存儲(chǔ)類(lèi)型空間new 類(lèi)型名下標(biāo)表達(dá)式1下標(biāo)表達(dá)式2/創(chuàng)立儲(chǔ)存數(shù)組的空間new 類(lèi)名(初始值列表) /創(chuàng)立對(duì)象如果內(nèi)存開(kāi)辟失敗,對(duì)應(yīng)指針應(yīng)該為NULL,這是判斷內(nèi)存是否成功被開(kāi)辟的標(biāo)志:int *pnValue;pnValue=new int(3);if(pnValue=NULL)exit(
7、0);開(kāi)辟空間后一定要保持指針始終指向給內(nèi)存對(duì)于動(dòng)態(tài)數(shù)組中的操作:一是利用下標(biāo)操作,二是另外聲明一個(gè)指針來(lái)遍歷數(shù)組。動(dòng)態(tài)內(nèi)存開(kāi)辟后,最好進(jìn)行初始化:memset(指針名,初始值,開(kāi)辟空間的總字節(jié)數(shù));sizeof(*p)計(jì)算出的是指針?biāo)純?nèi)存的大小,并不是指向內(nèi)存空間的大小利用delete釋放指針后將指針置為NULL;delete plArray;plArray=NULL;C風(fēng)格的動(dòng)態(tài)內(nèi)存分配方法:開(kāi)辟動(dòng)態(tài)內(nèi)存malloc函數(shù):void *malloc(size_t size)包含頭文件:<stdlib.h>、<malloc.h>size_t是需要分配內(nèi)存的字節(jié)數(shù)如果開(kāi)
8、辟內(nèi)存成功,返回void類(lèi)型指針;如果失敗返回空指針如果需要的不是void類(lèi)型內(nèi)存空間,需要進(jìn)行強(qiáng)制類(lèi)型轉(zhuǎn)換釋放函數(shù)free:void free(void *pointer);函數(shù)間的動(dòng)態(tài)內(nèi)存?zhèn)鬟f:利用引用類(lèi)型參數(shù)傳遞動(dòng)態(tài)內(nèi)存(推薦使用):void GetMen(char* &p,size_t size);利用二級(jí)指針參數(shù)傳遞動(dòng)態(tài)內(nèi)存:void GetMen(char *p,size_t size);利用函數(shù)返回至來(lái)傳遞動(dòng)態(tài)內(nèi)存char *GetMen(size_t size);2.3.5二級(jí)指針變量概念2.3.6使用指針要特別注意指針的指向淺復(fù)制容易產(chǎn)生野指針,深復(fù)制會(huì)產(chǎn)生大量資源智
9、能指針2.4對(duì)數(shù)據(jù)變量的保護(hù)2.4.1用const聲明常值數(shù)據(jù)變量#define宏定義預(yù)處理命令:#define 常量名 值const 數(shù)據(jù)類(lèi)型 變量名 = 常值數(shù)據(jù)類(lèi)型 const 變量名 = 常值常量的值保持不變,不允許再賦值2.4.2在聲明中用const對(duì)指針變量進(jìn)行限定聲明常值指針變量:數(shù)據(jù)類(lèi)型 *const 指針變量名 = 常地址;指針變量的值保持不變,指向恒定聲明只讀指針變量:const 數(shù)據(jù)類(lèi)型 *指針變量名;指針?biāo)钢豢勺x不可寫(xiě)聲明常值只讀指針變量:const 數(shù)據(jù)類(lèi)型 *const 指針變量名 = 常地址;2.4.3在聲明中用const對(duì)別名變量進(jìn)行限定聲明只讀別名變量:co
10、nst 數(shù)據(jù)類(lèi)型 &別名變量名 = 變量名第三章 數(shù)據(jù)的運(yùn)算和簡(jiǎn)單的輸入輸出運(yùn)算3.1運(yùn)算符和表達(dá)式運(yùn)算符優(yōu)先級(jí):圓括弧是一級(jí)優(yōu)先二級(jí)優(yōu)先全是單目運(yùn)算符,可稱(chēng)單目塊35級(jí)可稱(chēng)為加減乘除塊。其中左右位移運(yùn)算相當(dāng)于乘和除6、7級(jí)優(yōu)先可稱(chēng)為關(guān)系塊812級(jí)優(yōu)先可稱(chēng)為邏輯塊,其中810是按位邏輯塊1315優(yōu)先級(jí)可稱(chēng)為條件、賦值、逗號(hào)塊3.2sizeof運(yùn)算符和sizeof表達(dá)式3.3算數(shù)運(yùn)算符和算數(shù)表達(dá)式3.4關(guān)系運(yùn)算符和關(guān)系表達(dá)式3.5邏輯運(yùn)算符和邏輯表達(dá)式3.6位運(yùn)算符和位運(yùn)算表達(dá)式3.7條件運(yùn)算符和條件表達(dá)式3.8賦值運(yùn)算符和賦值表達(dá)式3.9逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式3.10根本數(shù)據(jù)混合運(yùn)算是
11、數(shù)據(jù)類(lèi)型的轉(zhuǎn)換3.10.1隱性類(lèi)型轉(zhuǎn)換賦值運(yùn)算中的隱性類(lèi)型轉(zhuǎn)換如果有操作數(shù)長(zhǎng)度長(zhǎng),而左操作數(shù)長(zhǎng)度短,賦值時(shí)按低位優(yōu)先的原那么將右操作數(shù)賦入左操作數(shù)存間,存間裝滿(mǎn)為止,剩下的高位數(shù)被舍棄。3.10.2強(qiáng)迫類(lèi)型轉(zhuǎn)換語(yǔ)法形式:類(lèi)型說(shuō)明符表達(dá)式;類(lèi)型說(shuō)明符表達(dá)式;類(lèi)型說(shuō)明符表達(dá)式3.11指針的增減運(yùn)算3.12簡(jiǎn)單的輸入輸出運(yùn)算3.12.1輸入流和輸出流3.12.2提取運(yùn)算符>>和插入運(yùn)算符<<3.12.3提取表達(dá)式和插入表達(dá)式3.12.4根本數(shù)據(jù)的輸入和輸出字符串的輸出想要輸出一條字符串,只要將字符串的首字符指針作為插入運(yùn)算符<<的右操作數(shù)就行:cout<&l
12、t;dkfjs;/雙引號(hào)括起來(lái)的字符串可以看做是一個(gè)字符串表達(dá)式,字符串表達(dá)式的值就是字符串的周字符指針char*p = “skdjf;cout<<p;3.13簡(jiǎn)單輸入輸出的格式控制3.13.1輸入/輸出的默認(rèn)格式整數(shù)按十進(jìn)制數(shù)出實(shí)數(shù)按十進(jìn)制浮點(diǎn)輸出,有效數(shù)字6位當(dāng)實(shí)數(shù)的整數(shù)局部大于或等于7位時(shí),那么轉(zhuǎn)化為科學(xué)計(jì)數(shù)法輸出。當(dāng)小數(shù)點(diǎn)后連續(xù)有4個(gè)或4個(gè)以上零,那么轉(zhuǎn)換為科學(xué)計(jì)數(shù)法輸出以上輸出寬度域?qū)捤甲址麛?shù)均默認(rèn)為0,靠右對(duì)齊假設(shè)實(shí)際輸出字符大于域?qū)挄r(shí),按實(shí)際字符輸出3.13.2用格式控制符對(duì)格式進(jìn)行控制控制工程控制符功能有效期進(jìn)制dec輸入或輸出整數(shù)時(shí)用十進(jìn)制表示長(zhǎng)效Hex輸入輸出
13、整數(shù)時(shí)用十六進(jìn)制表示長(zhǎng)效iostream0ct輸入輸出整數(shù)時(shí)用八進(jìn)制表示長(zhǎng)效換行endl輸出時(shí)換行并進(jìn)行刷新短效無(wú)域?qū)抯etw(int)出數(shù)據(jù)的域?qū)?,靠右短效顯示余項(xiàng)空格填充iomanip填充setfill(char)對(duì)輸出域余用字符填充長(zhǎng)效精度setprecision(int)設(shè)置實(shí)數(shù)輸出精度長(zhǎng)效第四章 程序的流程控制4.1程序流程的根本結(jié)構(gòu)4.2選擇結(jié)構(gòu)語(yǔ)句4.3循環(huán)結(jié)構(gòu)語(yǔ)句4.4其他控制語(yǔ)句和函數(shù)4.4.1break語(yǔ)句4.4.2continue語(yǔ)句4.4.3goto語(yǔ)句4.4.4abort函數(shù)和exit函數(shù)Abort函數(shù)和exit函數(shù)都是C+標(biāo)準(zhǔn)庫(kù)cstdlib中的兩個(gè)函數(shù)。Void
14、abortVoid exitint status這兩個(gè)函數(shù)的作用都是終止整個(gè)程序的運(yùn)行,將控制返還給操作系統(tǒng)。但前者僅僅結(jié)束程序的運(yùn)行,不做任何善后工作。而后者在終止前做些收尾工作,例如關(guān)閉翻開(kāi)的文件、寫(xiě)完緩沖輸出的內(nèi)容、收回變量存間等。參數(shù)status置0表示正常退出,置1那么表示異常退出第五章 函數(shù)5.1函數(shù)的概念5.1.1函數(shù)的概述5.1.2函數(shù)的定義當(dāng)返回值的類(lèi)型為int型時(shí),可省略標(biāo)識(shí)符5.2對(duì)函數(shù)的調(diào)用5.2.1被調(diào)函數(shù)的函數(shù)原型聲明函數(shù)原型聲明中的形式參數(shù)表,只要求按函數(shù)定義中各形參的類(lèi)型、次序、個(gè)數(shù)寫(xiě)正確就行,至于形參的名稱(chēng)不寫(xiě)甚至寫(xiě)錯(cuò)也不要緊。5.2.2函數(shù)的調(diào)用5.2.3函
15、數(shù)調(diào)用流程三步驟:中斷、轉(zhuǎn)移、返回。在中斷時(shí),把當(dāng)時(shí)的現(xiàn)場(chǎng)數(shù)據(jù)和地址儲(chǔ)存起來(lái)。在返回時(shí)把現(xiàn)場(chǎng)數(shù)據(jù)和地址取出。根據(jù)這地址就能精確的回到原流程處5.2.4函數(shù)的遞歸調(diào)用要形成函數(shù)的遞歸調(diào)用,這遞歸關(guān)系和遞歸終止條件二者缺一不可5.3函數(shù)內(nèi)外變量的作用域和生存期5.3.1作用域函數(shù)內(nèi)的塊作用域:用花括號(hào)括起來(lái)的局部稱(chēng)為一個(gè)塊,在塊內(nèi)聲明的變量,其作用域開(kāi)始于變量的聲明處,結(jié)束于塊的結(jié)尾處。在同一作用域內(nèi),不能聲明同名變量在沒(méi)有互相包含關(guān)系的不同的作用域中,允許聲明同名變量。它們各在各的作用域內(nèi)使用,互不干擾。在互相間又包含關(guān)系的作用域中,也允許聲明同名變量。不過(guò),在使用同名變量時(shí),在被包含的內(nèi)層作用
16、域中,只能使用內(nèi)層作用域所聲明的同名變量同時(shí)自動(dòng)覆蓋掉外層的同名變量?;蛘哒f(shuō),在內(nèi)層中,對(duì)外層的同名變量是不可見(jiàn)的。這種情況也可簡(jiǎn)稱(chēng)為“內(nèi)層同名優(yōu)先。和for語(yǔ)句有關(guān)的作用域:假設(shè)在for語(yǔ)句的圓括弧內(nèi)聲明了某變量,那么該變量就如同在for語(yǔ)句所在的作用域內(nèi)聲明一樣,該變量作用域從聲明處開(kāi)始至for語(yǔ)句所在作用域結(jié)束為止。假設(shè)在for語(yǔ)句的循環(huán)體內(nèi)聲明了某變量,那么該變量的作用域就只在循環(huán)體范圍內(nèi),作用域從聲明處開(kāi)始至循環(huán)體結(jié)束處為止。文件作用域:在所有函數(shù)值為所聲明的變量稱(chēng)為全局變量。全局變量的作用域是從聲明處開(kāi)始到文件結(jié)束處為止。這個(gè)作用域稱(chēng)為文件作用域。如果要在局部變量的作用域內(nèi)訪問(wèn)與局
17、部變量同名的全局變量,那么可在同名變量前加域運(yùn)算符“:來(lái)進(jìn)行訪問(wèn)。5.3.2生存期靜態(tài)生存期:從變量的作用域開(kāi)始,變量因系統(tǒng)配給空間而開(kāi)始存活。如果在作用與結(jié)束時(shí),存間未被收回而仍然占用著。要一直等到主函數(shù)結(jié)束時(shí),也就是整個(gè)程序結(jié)束時(shí),系統(tǒng)才收回該變量的存間,從而使該變量消亡。對(duì)于局部變量,假設(shè)在其聲明語(yǔ)句的類(lèi)型前面加static,那么該變量的生存期就是靜態(tài)生存期。變量就是靜態(tài)變量。對(duì)于全局變量,無(wú)需加static,他天生就是靜態(tài)變量。因?yàn)樗緛?lái)就是從聲明處開(kāi)始獲得存間而存活,直到主函數(shù)結(jié)束,存間才被收回而消亡靜態(tài)變量必須在聲明語(yǔ)句中設(shè)置初值。如未設(shè)置初值,那么系統(tǒng)會(huì)自動(dòng)設(shè)置初值0。靜態(tài)變量的
18、聲明語(yǔ)句只執(zhí)行一次。5.4函數(shù)內(nèi)外的數(shù)據(jù)傳遞5.4.1函數(shù)通過(guò)參數(shù)進(jìn)行數(shù)據(jù)傳遞參數(shù)的別名傳遞:訪問(wèn)別名變量于被調(diào)函數(shù)之內(nèi),效達(dá)實(shí)名變量于主調(diào)函數(shù)之中。雙向傳遞參數(shù)的地址傳遞:訪問(wèn)指針?biāo)赣诒徽{(diào)函數(shù)之內(nèi),效達(dá)所指變量于主調(diào)函數(shù)之中。雙向傳遞參數(shù)的值傳遞:主調(diào)函數(shù)將數(shù)據(jù)傳遞給被調(diào)函數(shù)。單向傳遞5.4.2具有默認(rèn)值的參數(shù)傳遞具有默認(rèn)參數(shù)的函數(shù):默認(rèn)參數(shù)的說(shuō)明必須出現(xiàn)在函數(shù)調(diào)用之前,不可重復(fù)說(shuō)明。參數(shù)的默認(rèn)值可以使表達(dá)式,但表達(dá)式必須有確定的值。默認(rèn)參數(shù)可以有多個(gè),但必須在參數(shù)表中靠右邊排列。同一個(gè)函數(shù)在不同的作用域內(nèi),可提供不同的默認(rèn)參數(shù)值。在不同作用域中進(jìn)行聲明5.4.3函數(shù)通過(guò)返回值進(jìn)行數(shù)據(jù)傳遞
19、返回一個(gè)根本數(shù)據(jù)值返回一個(gè)靜態(tài)變量的地址:靜態(tài)變量延長(zhǎng)了變量的生存期,但作用域并未改變。所以可以通過(guò)訪問(wèn)指針?biāo)?,?lái)訪問(wèn)變量名失效的靜態(tài)變量返回一個(gè)靜態(tài)變量的別名:在主調(diào)函數(shù)中,函數(shù)調(diào)用式可作為該靜態(tài)變量的別名來(lái)使用5.4.4函數(shù)通過(guò)全局變量傳遞數(shù)據(jù)除非特別需要,一般不使用全局變量5.5內(nèi)聯(lián)函數(shù)和函數(shù)的重載內(nèi)聯(lián)函數(shù)在定義函數(shù)時(shí),在前面冠以關(guān)鍵字inline:內(nèi)聯(lián)函數(shù)也應(yīng)該定義在前,使用在后。在C+中,除函數(shù)體內(nèi)含有循環(huán)、switch分支和復(fù)雜嵌套的if語(yǔ)句外,所有函數(shù)均可定義為內(nèi)聯(lián)函數(shù)。用戶(hù)確定函數(shù)的內(nèi)聯(lián),只是一個(gè)“內(nèi)聯(lián)的建議。到時(shí)候是否真的照“內(nèi)聯(lián)執(zhí)行,要由編譯器決定。函數(shù)重載:形參類(lèi)型不同
20、;形參個(gè)數(shù)不同。5.6用指針對(duì)函數(shù)進(jìn)行操作處理5.6.1函數(shù)指針函數(shù)地址:首內(nèi)存單元地址叫做函數(shù)的入口地址,簡(jiǎn)稱(chēng)為函數(shù)地址函數(shù)名就是函數(shù)地址函數(shù)指針變量:專(zhuān)門(mén)用來(lái)存放函數(shù)地址的變量。5.6.2函數(shù)指針的聲明和賦值聲明一個(gè)函數(shù)指針變量時(shí),需要說(shuō)明所指函數(shù)的類(lèi)型和形參表。一般形式:數(shù)據(jù)類(lèi)型*函數(shù)指針名形參表;函數(shù)指針變量的初始化和賦值:Double funint,int,double;Double*pint,int,double=fun;Double funint,int,double;Double*pint,int,double;P=fun;Double funint,int,double,*p
21、int,int,double=fun;5.6.3用函數(shù)指針調(diào)用函數(shù)用函數(shù)指針調(diào)用函數(shù)的形式和用函數(shù)名調(diào)用函數(shù)的形式是一致的,只不過(guò)是把函數(shù)名換成函數(shù)指針名:函數(shù)指針名實(shí)際參數(shù)表;5.6.4用通用函數(shù)處理函數(shù)主函數(shù)以具體函數(shù)的地址為實(shí)參調(diào)用通用函數(shù),而通用函數(shù)那么以同類(lèi)型函數(shù)指針變量作為形參,來(lái)接納具體函數(shù)的地址。5.7函數(shù)的多文件組織5.7.1模塊化程序設(shè)計(jì)模塊化程序設(shè)計(jì):自頂而下,逐步細(xì)化,模塊化。5.7.2原文件之間的訪問(wèn)源文件之間對(duì)全局變量的訪問(wèn):如果本文件中所聲明的全局變量屬本文件私用,不允許別的文件訪問(wèn),那么必須在全局變量類(lèi)型前加修飾詞static。如果本文件要用到別的文件中允許訪問(wèn)
22、的全局變量,那么本著先聲明后使用的原那么,應(yīng)先照原樣做變量聲明在聲明前加修飾詞extern。原文件之間對(duì)函數(shù)的訪問(wèn):與全局變量類(lèi)同。不允許別的文件訪問(wèn),在原型聲明前加static,使用其他文件中可以訪問(wèn)的函數(shù),做原型聲明,并在前加extern5.7.3頭文件頭文件:將函數(shù)原型和全局變量加extern修飾集中起來(lái),還有一些常數(shù)定義,放在一起寫(xiě)成一個(gè)文件,供各個(gè)相關(guān)的源文件使用5.7.4多文件組織的編譯和鏈接包含文件:在定義main函數(shù)的源文件中,將組成同一程序的其他文件用包含指令#include包含進(jìn)來(lái)。由編譯程序?qū)@些文件一起編譯,并鏈接成一個(gè)可執(zhí)行文件。工程文件的方法:將組成一個(gè)程序的所有文
23、件都加到工程文件中,由編譯器自動(dòng)完成多文件組織的編譯和鏈接。5.8編譯預(yù)處理5.8.1#include指令又叫文件包含指令。使用:執(zhí)行時(shí)將所指定的文件嵌入到該語(yǔ)句處,替換該語(yǔ)句??汕短资褂谩P问剑?include<文件名>:用于包含C+庫(kù)函數(shù)頭文件。搜索該文件時(shí)系統(tǒng)直接到存放C+庫(kù)函數(shù)頭文件所在的目錄中查找所要包含的文件,這叫按標(biāo)準(zhǔn)方式搜索文件。#include文件名:用于包含用戶(hù)自己編寫(xiě)的頭文件。系統(tǒng)先在當(dāng)前目錄中搜索該文件,假設(shè)搜索不到,再按標(biāo)準(zhǔn)方式進(jìn)行搜索。5.8.2#define和#undef指令#define指令宏指令:#define 宏名 宏定義內(nèi)容宏名常用大寫(xiě)字母表示
24、;可以出現(xiàn)在程序中的任何位置,一般放在原文件開(kāi)頭;在宏擴(kuò)展時(shí),只是用原封不動(dòng)的宏定義內(nèi)容來(lái)替換宏名;當(dāng)宏名出現(xiàn)在字符串中時(shí),編譯預(yù)處理對(duì)宏名不進(jìn)行宏拓展。#undef指令終止宏指令:#undef 宏名終止宏的作用域5.9條件編譯5.9.1以宏名已被定義或未被定義作為條件#ifdef 宏名程序段#endif#ifdef 宏名程序段1else程序段2#endif#ifndef 宏名程序段#endif#ifndef程序段1else程序段2#endif5.9.2以表達(dá)式邏輯為1或0作為條件#if 表達(dá)式程序段#endif#if 表達(dá)式程序段1else程序段2#endif5.9.3關(guān)于條件編譯的說(shuō)明表達(dá)
25、式必須有確定的值,只能是常量的運(yùn)算??梢猿霈F(xiàn)在程序中的任何位置。第六章 數(shù)組6.1一維數(shù)組6.1.1一維數(shù)組的聲明及初始化6.1.2對(duì)一維數(shù)組元素的直接訪問(wèn)6.1.3用一維數(shù)組名對(duì)元素進(jìn)行訪問(wèn)一維數(shù)組名既是整個(gè)數(shù)組之名同時(shí)又是數(shù)組首元素之地址。數(shù)組名不是變量,系統(tǒng)不配給它變量存間。因此對(duì)數(shù)組名不能作賦值、自增或自減等涉賦運(yùn)算,不能進(jìn)行自增或自減走步。6.1.4用指針變量對(duì)一維數(shù)組元素進(jìn)行訪問(wèn)用元素指針變量做被調(diào)函數(shù)形參用一維數(shù)組做被調(diào)函數(shù)形參:Void fundouble x8;Void fundouble x,int n;Void fundouble *x,int n;6.1.5用數(shù)組名實(shí)參
26、調(diào)用函數(shù)對(duì)一維數(shù)組進(jìn)行處理6.2二維數(shù)組6.2.1二維數(shù)組的聲明及初始化6.2.2對(duì)二維數(shù)組元素的直接訪問(wèn)6.2.3用二維數(shù)組名對(duì)元素進(jìn)行訪問(wèn)二維數(shù)組名是首行地址,是指向首行的指針。所指目標(biāo)是行,所以是按行走步的,走的是行步。各行的數(shù)組名是各行的首元素地址,所指目標(biāo)是元素,所以是按元素走步的。實(shí)際是按列走步,走的是列步*b+i+j等價(jià)于bij系統(tǒng)不作為變量配給存間,不可做賦值、自增或自減運(yùn)算。二維數(shù)組的首元素地址可表示為:&b00、&b0、*b6.2.4用指針變量對(duì)二維數(shù)組元素進(jìn)行訪問(wèn)元素指針變量:指向元素的指針,按元素走步。二維數(shù)組名是首行指針按行走步,元素指針變量按元素走步
27、。所以,不能直接用二維數(shù)組名對(duì)元素指針賦值int b35;int *p;p=(int*)b;實(shí)在要賦值,必須先按指針的類(lèi)型進(jìn)行強(qiáng)制類(lèi)型轉(zhuǎn)換*(p+n*i+j)等價(jià)于bij一維數(shù)組指針變量:數(shù)據(jù)類(lèi)型*指針變量名常量表達(dá)式與二維數(shù)組列數(shù)相等可以用二維數(shù)組名直接賦值6.2.5用首元素地址或數(shù)組名作實(shí)參調(diào)用函數(shù)對(duì)二維數(shù)組進(jìn)行處理效果直達(dá)主調(diào)函數(shù)6.3關(guān)于字符串的處理6.3.1字符串的輸入和輸出用一維數(shù)組對(duì)字符串逐個(gè)字符輸入和輸出:采用循環(huán)語(yǔ)句用“cin>>和“cout<<對(duì)字符串進(jìn)行輸入和輸出:只需給出數(shù)組名無(wú)法輸入空格用函數(shù)cin.getline對(duì)字符串進(jìn)行輸入:cin.ge
28、tline(首地址,長(zhǎng)度)6.3.2用一維字符串?dāng)?shù)組處理字符串用字符串初始化一維字符數(shù)組:采用逐個(gè)字符初始化時(shí),末尾加0;字符串整體初始化:char s220 = “a sting;Char s320 = “a string;6.3.3用庫(kù)函數(shù)處理字符串頭文件:cstring復(fù)制:char *strcpy(char x,char *y) 將y復(fù)制到x中拼接:char *strcat(char x,char *y) 26.4關(guān)于字符串組的處理6.4.1用二維數(shù)組處理字符串組6.4.2用一維字符指針數(shù)組處理字符串組6.4.3用一維字符指針數(shù)組名做實(shí)參調(diào)用函數(shù)處理字符串組6.5動(dòng)態(tài)配給存間6.5.1
29、new運(yùn)算符的用法同類(lèi)型指針變量 = new 類(lèi)型名;同類(lèi)型指針變量 = new 類(lèi)型名初值;同類(lèi)型指針變量 = new 類(lèi)型名元素個(gè)數(shù);同類(lèi)型指針變量 = new 類(lèi)型名行數(shù)列數(shù)配給成功返回存間地址;配給失敗返回空指針0;6.5.2delete運(yùn)算符的用法delete 指針名delete 指針名delete 行數(shù)指針名第七章 枚舉類(lèi)型和結(jié)構(gòu)類(lèi)型7.1枚舉類(lèi)型7.1.1枚舉類(lèi)型概念枚舉類(lèi)型:取值范圍只局限在某些數(shù)據(jù)組成的集合之內(nèi)的變量。枚舉類(lèi)型的定義:enum 枚舉類(lèi)型名枚舉元素列表枚舉元素又叫枚舉值或枚舉常量枚舉元素的整型值:枚舉元素具有整形值,假設(shè)不另行設(shè)置,枚舉元素的整型值依次默認(rèn)為0、
30、1、2、3。設(shè)置整型值:Enum weekdaysunday=7,Monday=1,Tuesday,Wednesday,Thursday,F(xiàn)riday,Saturday;對(duì)于Monday以后的枚舉元素的值未設(shè)置,系統(tǒng)會(huì)按順序逐個(gè)加1在數(shù)學(xué)運(yùn)算時(shí)枚舉型數(shù)據(jù)會(huì)自動(dòng)轉(zhuǎn)換為整型值參與運(yùn)算。7.1.2枚舉變量的聲明和賦值枚舉變量的聲明:枚舉類(lèi)型名 枚舉變量名;枚舉變量既已聲明系統(tǒng)會(huì)對(duì)枚舉變量配給int型存間,每個(gè)枚舉變量存間占四個(gè)內(nèi)存單元聲明的三種方法:在定義枚舉類(lèi)型以后,另行聲明;在定義枚舉類(lèi)型的同時(shí)進(jìn)行聲明;在定義枚舉類(lèi)型時(shí),不取枚舉類(lèi)型名,直接聲明枚舉變量賦值:可以用枚舉元素對(duì)枚舉變量進(jìn)行賦值。同
31、類(lèi)型枚舉變量也可以相互賦值。不能直接賦整型值,要經(jīng)過(guò)強(qiáng)制類(lèi)型轉(zhuǎn)換;具有整型值可參與數(shù)值運(yùn)算,不可進(jìn)行涉賦類(lèi)運(yùn)算,必要時(shí)先進(jìn)行強(qiáng)制類(lèi)型轉(zhuǎn)換;枚舉類(lèi)型是標(biāo)識(shí)符,不能直接輸入輸出,只能輸入整型值,輸出對(duì)應(yīng)字符串;對(duì)枚舉類(lèi)型進(jìn)行輸出時(shí),顯示整型值。7.1.3調(diào)用函數(shù)對(duì)枚舉變量輸入和輸出通過(guò)switch語(yǔ)句實(shí)現(xiàn)7.1.4枚舉元素的組合狀態(tài)枚舉元素標(biāo)識(shí)位:枚舉元素整型值按2的倍數(shù)遞增,使所有枚舉元素都有一個(gè)各自專(zhuān)用的二進(jìn)制位枚舉元素組合的狀態(tài)字:可用一個(gè)整數(shù)flag來(lái)說(shuō)明元素組合狀態(tài)。計(jì)算時(shí),個(gè)元素的整型值按位或運(yùn)算求得flag值7.2C+用格式狀態(tài)字表示輸入輸出格式的組合7.2.1將各個(gè)輸入輸出格式定義
32、為各個(gè)枚舉元素這些枚舉元素是C+在iOS域中定義的,使用時(shí),應(yīng)該加域運(yùn)算符“ios:。7.2.2用格式狀態(tài)字flag表示多項(xiàng)格式組合狀態(tài)格式狀態(tài)字flag:多項(xiàng)格式整型值按位或7.2.3用格式狀態(tài)字通過(guò)格式控制符對(duì)多項(xiàng)格式的組合進(jìn)行控制setiosflagsint flag設(shè)置格式狀態(tài)字flag,說(shuō)明格式組合狀態(tài)resetiosflagsint flag終止setiosflagsint flag的設(shè)置7.3結(jié)構(gòu)類(lèi)型7.3.1結(jié)構(gòu)類(lèi)型的定義一般格式:struct 結(jié)構(gòu)類(lèi)型名數(shù)據(jù)類(lèi)型1 成員變量1數(shù)據(jù)類(lèi)型2 成員變量27.3.2結(jié)構(gòu)類(lèi)型變量的聲明、初始化和賦值結(jié)構(gòu)類(lèi)型變量所占空間:理論上是各個(gè)成員
33、存間之和。但實(shí)際上為了提高對(duì)內(nèi)存的存取速度,分配給各個(gè)結(jié)構(gòu)成員的內(nèi)存空間以字4字節(jié)為單位,以保證其地址在字的整數(shù)倍處。初始化:在大括號(hào)中,將所有成員之值依次排列,相互用逗號(hào)隔開(kāi)靜態(tài)成員:必須在結(jié)構(gòu)體類(lèi)型創(chuàng)立對(duì)象之前為靜態(tài)成員設(shè)置初值:數(shù)據(jù)類(lèi)型 結(jié)構(gòu)體類(lèi)型:靜態(tài)成員=初值;靜態(tài)成員屬于結(jié)構(gòu)體,所有該結(jié)構(gòu)體類(lèi)型的變量共享靜態(tài)成員7.3.3對(duì)結(jié)構(gòu)類(lèi)型變量的成員進(jìn)行訪問(wèn)一般形式:結(jié)構(gòu)型變量.成員名7.3.4結(jié)構(gòu)類(lèi)型數(shù)組7.4鏈表7.4.1鏈表的組成7.4.2如何表示節(jié)點(diǎn)成員變量7.4.3對(duì)鏈表結(jié)點(diǎn)的操作7.4.4插入節(jié)點(diǎn)7.4.5建立有序新鏈表7.4.6輸出鏈表各節(jié)點(diǎn)的數(shù)據(jù)7.4.7刪除結(jié)點(diǎn)7.4.8
34、釋放鏈表7.5用typedef來(lái)定義某類(lèi)型的又一個(gè)標(biāo)識(shí)符7.5.1方法步驟typedef 類(lèi)型名 類(lèi)型名別名先按聲明變量的方法,寫(xiě)出聲明語(yǔ)句:int*p;函數(shù)指針將變量名換成想要定義的標(biāo)識(shí)符:int*POINTER;在最前面加typedef第八章 類(lèi)和對(duì)象8.1概述8.2類(lèi)8.2.1類(lèi)的定義8.2.2對(duì)類(lèi)內(nèi)各成員訪問(wèn)的控制規(guī)那么8.2.3類(lèi)的引用性聲明8.2.4面向?qū)ο蟪绦蛟O(shè)計(jì)的多文件組織8.3對(duì)象8.3.1對(duì)象的聲明8.3.2對(duì)象的初始化8.3.3同類(lèi)對(duì)象之間的整體賦值8.3.4訪問(wèn)對(duì)象的數(shù)據(jù)成員和成員函數(shù)8.3.5指向本對(duì)象的this指針8.4構(gòu)造函數(shù)8.4.1構(gòu)造函數(shù)的作用特點(diǎn)和定義形式
35、8.4.2對(duì)構(gòu)造函數(shù)的兩點(diǎn)說(shuō)明8.4.3拷貝構(gòu)造函數(shù)的作用特點(diǎn)和定義形式C+會(huì)自動(dòng)生成復(fù)制構(gòu)造函數(shù)和賦值操作符重載當(dāng)對(duì)象中含有指針,涉及動(dòng)態(tài)分配空間時(shí),必須要重新定義:C+自動(dòng)產(chǎn)生的復(fù)制構(gòu)造函數(shù)會(huì)將對(duì)象中的指針直接賦值給新建對(duì)象的指針,我們應(yīng)該將指針中的地址賦值給指針:先得到指針,然后取指向內(nèi)容,然后動(dòng)態(tài)分配內(nèi)存空間,把得到的地址賦值給指針8.4.4構(gòu)造函數(shù)和new運(yùn)算符深復(fù)制和淺復(fù)制自動(dòng)生成的復(fù)制構(gòu)造函數(shù)為淺復(fù)制淺復(fù)制時(shí)只復(fù)制指針不復(fù)制指針?biāo)竷?nèi)容,兩個(gè)指針指向同一個(gè)存間的內(nèi)容,這個(gè)存間的內(nèi)容改變時(shí),兩個(gè)指針指向內(nèi)容都改變深復(fù)制時(shí)對(duì)指針?biāo)竷?nèi)容也進(jìn)行復(fù)制,兩個(gè)指針指向不同,但指向存間的內(nèi)容相
36、同:改變存間的內(nèi)容只會(huì)影響一個(gè)在復(fù)制時(shí)創(chuàng)立新的存間然后將原內(nèi)容復(fù)制過(guò)來(lái)8.4.5默認(rèn)的構(gòu)造函數(shù)和拷貝構(gòu)造函數(shù)8.5析構(gòu)函數(shù)8.5.1析構(gòu)函數(shù)的作用特點(diǎn)和定義形式如果自定義了析構(gòu)函數(shù),就必須自定義復(fù)制構(gòu)造函數(shù)和賦值操作符重載如果構(gòu)造函數(shù)進(jìn)行了動(dòng)態(tài)分配內(nèi)存,連接了數(shù)據(jù)庫(kù),翻開(kāi)了文件,就必須自定義析構(gòu)函數(shù)來(lái)關(guān)閉這些8.5.2默認(rèn)的析構(gòu)函數(shù)8.6類(lèi)的靜態(tài)成員8.6.1靜態(tài)數(shù)據(jù)成員靜態(tài)數(shù)據(jù)成員:描述類(lèi)屬性的數(shù)據(jù)作為類(lèi)的數(shù)據(jù)成員,前面要用關(guān)鍵詞static進(jìn)行修飾。靜態(tài)成員不屬于對(duì)象,而屬于類(lèi)。靜態(tài)數(shù)據(jù)成員的聲明:在類(lèi)的定義中只要冠以static修飾做引用性聲明。在類(lèi)的定義中不可初始化靜態(tài)數(shù)據(jù)成員,在類(lèi)的
37、定義外用域運(yùn)算符做一個(gè)正式聲明:類(lèi)型 類(lèi)名:靜態(tài)數(shù)據(jù)成員名;或 類(lèi)型 類(lèi)名:靜態(tài)數(shù)據(jù)成員名=初值;正式聲明時(shí)分配存間。特例:靜態(tài)整形常量可以在聲明時(shí)賦值static const int 變量名 = 常值;在類(lèi)內(nèi)對(duì)靜態(tài)成員的訪問(wèn),和其他成員一樣,不管是公有還是私有所有成員函數(shù)都可訪問(wèn)它。類(lèi)外對(duì)公有靜態(tài)成員的訪問(wèn):通過(guò)對(duì)象名直接訪問(wèn);通過(guò)類(lèi)名直接訪問(wèn)。類(lèi)外對(duì)私有靜態(tài)成員的訪問(wèn):設(shè)置屬于類(lèi)的公有靜態(tài)成員函數(shù),作為類(lèi)屬對(duì)外的接口。8.6.2靜態(tài)成員函數(shù)靜態(tài)成員函數(shù)中不能使用this指針:this是指向當(dāng)前對(duì)象的指針,而靜態(tài)成員屬于類(lèi),與對(duì)象無(wú)關(guān)。8.7類(lèi)的友元8.7.1友元的概念8.7.2運(yùn)用友元的一
38、個(gè)問(wèn)題8.7.3友元聲明的一般形式8.7.4關(guān)于友元的幾點(diǎn)說(shuō)明8.8類(lèi)的嵌套8.8.1類(lèi)嵌套的關(guān)系8.8.2嵌套類(lèi)構(gòu)造函數(shù)的定義和調(diào)用8.8.3嵌套類(lèi)構(gòu)造函數(shù)的定義形式第九章 繼承與派生9.1繼承與派生的根本概念9.1.1繼承、派生、基類(lèi)、派生類(lèi)的概念9.1.2積累和派生類(lèi)的構(gòu)成形式多脈繼承和單脈繼承多級(jí)繼承多脈多級(jí)混合繼承9.1.3派生類(lèi)成員的組成和身份確實(shí)定派生類(lèi)成員的組成:構(gòu)造函數(shù)和析構(gòu)函數(shù)、原基類(lèi)成員組、新增成員組。作用:原基類(lèi)成員組表達(dá)了派生類(lèi)繼承了基類(lèi)的全部特征和功能;新增成員組表達(dá)了派生類(lèi)在功能上比基類(lèi)有所開(kāi)展;派生類(lèi)在新增成員中,可設(shè)置與原基類(lèi)成員同名的成員特別是同名的成員函數(shù)
39、,其函數(shù)體可以有所不同。這表達(dá)了派生類(lèi)可以對(duì)所繼承的基類(lèi)的特征和功能加以改良。9.2派生類(lèi)9.2.1派生類(lèi)的一個(gè)簡(jiǎn)例9.2.2派生類(lèi)的定義形式Class 派生類(lèi)名:繼承方式 基類(lèi)名1,繼承方式 基類(lèi)名2Private:私有成員Public:公有成員9.2.3派生類(lèi)成員、存間及身份具體確定9.2.3派生類(lèi)的構(gòu)造函數(shù)和析構(gòu)函數(shù)9.3對(duì)派生類(lèi)中同名成員的二義性的處理9.3.1類(lèi)名加域運(yùn)算符:處理法派生類(lèi)內(nèi)訪問(wèn)同名成員:類(lèi)名:數(shù)據(jù)成員類(lèi)名:成員函數(shù)名參數(shù)表派生類(lèi)外對(duì)對(duì)象訪問(wèn)同名成員:派生類(lèi)對(duì)象名.類(lèi)名:數(shù)據(jù)成員名派生類(lèi)對(duì)象名.類(lèi)名:成員函數(shù)名參數(shù)表派生類(lèi)外對(duì)對(duì)象指針訪問(wèn)同名成員:派生類(lèi)對(duì)象指針名-&g
40、t;類(lèi)名:數(shù)據(jù)成員名派生類(lèi)對(duì)象指針名->類(lèi)名:成員函數(shù)名參數(shù)表9.3.2同名覆蓋原理訪問(wèn)派生類(lèi)中新增同名成員:通過(guò)對(duì)象直接訪問(wèn)9.3.3對(duì)共同基類(lèi)經(jīng)多級(jí)多脈繼承發(fā)生同名成員的處理類(lèi)名加域運(yùn)算符9.3.4用虛基類(lèi)防止一個(gè)數(shù)據(jù)多種版本問(wèn)題一個(gè)數(shù)據(jù)多個(gè)版本來(lái)歷:當(dāng)派生類(lèi)含有兩個(gè)或多個(gè)從一個(gè)共同基類(lèi)派生而來(lái)的基類(lèi)時(shí),派生類(lèi)在繼承時(shí),就會(huì)使共同基類(lèi)的成員在此派生類(lèi)中有多個(gè)版本措施:在定義共同基類(lèi)的直接派生類(lèi)時(shí),在共同基類(lèi)的繼承方式前加關(guān)鍵字“virtual。把共同基類(lèi)設(shè)置為虛基類(lèi)。class 共同基類(lèi)直接派生類(lèi)名:繼承方式 共同基類(lèi)名virtual只對(duì)緊跟其后的基類(lèi)起作用對(duì)于虛基類(lèi),所有直接和間接
41、派生類(lèi)的基類(lèi)初始化列表中都必須包含對(duì)虛基類(lèi)的初始化列表?;蛘?,虛基類(lèi)的構(gòu)造函數(shù)中必須由默認(rèn)值當(dāng)定義某派生類(lèi)時(shí),只有該派生類(lèi)對(duì)虛基類(lèi)構(gòu)造函數(shù)進(jìn)行調(diào)用只調(diào)用一次9.4類(lèi)的賦值兼容9.4.1共有派生類(lèi)對(duì)象可以頂替基類(lèi)對(duì)象公有基類(lèi)成員經(jīng)共有派生,仍然是公有身份,可直接訪問(wèn)9.4.2共有派生類(lèi)對(duì)基類(lèi)的賦值兼容公有派生類(lèi)對(duì)象可以賦值給基類(lèi)對(duì)象公有派生類(lèi)對(duì)象地址可以給基類(lèi)指針初始化或賦值公有派生類(lèi)對(duì)象可以初始化基類(lèi)別名9.4.3對(duì)一個(gè)程序運(yùn)行結(jié)果的思考對(duì)公有派生類(lèi)中基類(lèi)成員的操作9.4.4類(lèi)的賦值兼容規(guī)那么的實(shí)質(zhì)第十章 多態(tài)性10.1虛函數(shù)10.1.1虛函數(shù)的聲明virtual 函數(shù)類(lèi)型 成員函數(shù)名形參表;
42、基類(lèi)中虛函數(shù)一經(jīng)聲明,所有派生類(lèi)中的同名成員函數(shù),都為虛函數(shù)。構(gòu)造函數(shù)、靜態(tài)成員函數(shù)和友元函數(shù)都不可聲明為虛基類(lèi)一般來(lái)說(shuō),積累成員中有虛函數(shù),那么基類(lèi)析構(gòu)函數(shù)也應(yīng)聲明為虛函數(shù),聲明后派生路徑上所有派生類(lèi)的析構(gòu)函數(shù)都為虛函數(shù)。10.1.2虛函數(shù)在實(shí)施賦值兼容規(guī)那么中所起的作用當(dāng)基類(lèi)成員函數(shù)聲明為虛函數(shù)時(shí),在派生過(guò)程中可理解為:對(duì)于虛函數(shù),所有新增同名成員會(huì)對(duì)其進(jìn)行替換對(duì)于虛函數(shù)在賦值兼容規(guī)那么中,將會(huì)用使用同名派生成員進(jìn)行賦值10.1.3虛析構(gòu)函數(shù)當(dāng)析構(gòu)函數(shù)定義為虛函數(shù),對(duì)于用派生類(lèi)進(jìn)行初始化或賦值的基類(lèi),在調(diào)用析構(gòu)函數(shù)時(shí),將調(diào)用派生類(lèi)析構(gòu)函數(shù)10.2純虛函數(shù)和抽象類(lèi)10.2.1純虛函數(shù)聲明格式
43、:virtual 函數(shù)類(lèi)型 函數(shù)名參數(shù)表= 0;純虛函數(shù)無(wú)函數(shù)體,但派生類(lèi)中同名函數(shù)必須有函數(shù)體10.2.2抽象類(lèi)帶有純虛函數(shù)的類(lèi)不能實(shí)例化,不能聲明抽象類(lèi)的對(duì)象。但是可以聲明抽象類(lèi)指針和抽象類(lèi)別名10.2.3抽象類(lèi)實(shí)例10.3運(yùn)算符重載10.3.1運(yùn)算符重載概念10.3.2運(yùn)算符重載規(guī)那么不可重載的運(yùn)算符:三目運(yùn)算符?:、成員操作.、成員指針操作*、域限定:、求字節(jié)數(shù)sizeof重載的功能應(yīng)與原有功能相似重載后優(yōu)先級(jí)和結(jié)核性不變運(yùn)算符操作數(shù)個(gè)數(shù)不變10.3.3運(yùn)算符重載函數(shù)函數(shù)名:operator 運(yùn)算符原型聲明:函數(shù)類(lèi)型 operator 運(yùn)算符形參表一般用成員函數(shù)和友元函數(shù)實(shí)現(xiàn)10.4用
44、成員函數(shù)實(shí)現(xiàn)運(yùn)算符重載10.4.1用成員函數(shù)實(shí)現(xiàn)雙目運(yùn)算符重載做操作數(shù)是對(duì)象有操作數(shù)是形參10.4.2用成員函數(shù)實(shí)現(xiàn)單目運(yùn)算符重載一般為無(wú)參函數(shù)對(duì)于“+“-前置無(wú)形參,后置時(shí)用一個(gè)形參int以示區(qū)別,但并無(wú)實(shí)際意義做函數(shù)定義時(shí)不提供形參名10.5友元函數(shù)實(shí)現(xiàn)運(yùn)算符重載10.5.1用友元函數(shù)實(shí)現(xiàn)雙目運(yùn)算符重載10.5.2用友元函數(shù)實(shí)現(xiàn)單目運(yùn)算符重載10.6提取運(yùn)算符和插入運(yùn)算符的重載10.6.1提取運(yùn)算符和插入運(yùn)算符對(duì)根本數(shù)據(jù)的重載10.6.2用友元函數(shù)實(shí)現(xiàn)提取運(yùn)算符和插入運(yùn)算符對(duì)自定義類(lèi)型數(shù)據(jù)的重載10.7對(duì)象運(yùn)算中的類(lèi)型轉(zhuǎn)換10.7.1轉(zhuǎn)換構(gòu)造函數(shù)10.7.2類(lèi)型轉(zhuǎn)換函數(shù)10.7.3對(duì)象運(yùn)算
45、類(lèi)型轉(zhuǎn)換第十一章 輸入輸出流類(lèi)體系11.1根本概念11.1.1流類(lèi)概念流類(lèi):具有一定模式的數(shù)據(jù)流并且都有一個(gè)出入端口流:流類(lèi)的對(duì)象流類(lèi)的屬性:模式和端口流的端口:C+用端口名作為端口數(shù)據(jù),簡(jiǎn)稱(chēng)端口。流的模式:針對(duì)流的各種情況采取的各種處置方式的組合。采取枚舉元素作按位與的狀態(tài)字作為模式數(shù)據(jù)。11.1.2緩沖流緩沖區(qū)一般大?。?12字節(jié)11.1.3流類(lèi)體系11.2根本流類(lèi)體系11.2.1根本流類(lèi)體系組成11.2.2根本流類(lèi)體系各組成局部簡(jiǎn)介11.3I/O標(biāo)準(zhǔn)流11.3.1 I/O標(biāo)準(zhǔn)流概念輸入流類(lèi)對(duì)象:cin輸出流類(lèi)對(duì)象:cout、cerr、clog11.3.2 I/O標(biāo)準(zhǔn)流的端口和模式輸出流類(lèi)
46、對(duì)象中cerr為非緩沖流,可做即時(shí)輸出;cout輸出端口可重定向;clog很少用。11.3.3常用于輸入的成員函數(shù)int get();只從緩沖區(qū)提取一個(gè)字符包括空白,返回值為提取字符的ASCII碼作為返回值,遇到文件結(jié)束符Z,返回系統(tǒng)常量EOF-1cin.get();11.3.4常用于輸出的成員函數(shù)11.3.5用于格式控制的成員函數(shù)11.3.6用于檢驗(yàn)出錯(cuò)的成員函數(shù)11.4文件流體系11.4.1文件流類(lèi)體系組成11.4.2文件流類(lèi)體系個(gè)局部組成簡(jiǎn)介11.5 I/O文件流11.5.1 I/O文件流概念11.5.2 I/O文件流的建立,端口和模式確實(shí)定11.5.3用于建立和關(guān)閉I/O文件流的成員函
47、數(shù)11.5.4 I/O文本文件流常用的成員函數(shù)11.5.5 I/O二進(jìn)制文件流常用的成員函數(shù)第十二章 命名空間、模板和異常處理12.1命名空間12.1.1命名空間的定義與使用定義命名空間的三種形式:有名字的命名空間的定義與使用namespace<命名空間名>/各種成員說(shuō)明在命名空間外訪問(wèn)訪問(wèn)成員格式:命名空間名:命名空間成員C+允許將同一個(gè)命名空間中的定義和聲明分開(kāi)在多個(gè)文件里給出,或者分成許多段給出。嵌套的命名空間的定義與使用C+允許在一個(gè)命名空間中定義另一個(gè)命名空間,形成多個(gè)層次的作用域。當(dāng)從外部訪問(wèn)內(nèi)層命名空間中的成員時(shí),需要使用多個(gè)作用域運(yùn)算符無(wú)名的命名空間的定義與使用可以
48、在定義命名空間時(shí)省略名字無(wú)名命名空間中說(shuō)明的標(biāo)識(shí)符,使用時(shí)無(wú)法加命名空間名限定,只能在本文本的作用域內(nèi)使用,可以取代全局變量的定義:static 類(lèi)型名 變量名命名空間取別名:namespace 別名 = 命名空間名;嵌套命名空間的內(nèi)層命名空間取別名:namespace 別名 = 外層命名空間:內(nèi)層命名空間12.1.2標(biāo)準(zhǔn)命名空間標(biāo)準(zhǔn)C+庫(kù)的所有標(biāo)識(shí)符都定義在名為std的命名空間中。在程序中使用標(biāo)準(zhǔn)庫(kù)時(shí),需要使用std限定:std:coutC+標(biāo)準(zhǔn)庫(kù)分為兩類(lèi):沒(méi)有使用命名空間,與C兼容,包含文件的拓展名為“.h;使用命名空間std,不與C兼容,包含文件沒(méi)有拓展名“.h優(yōu)質(zhì)文本使用與C兼容的標(biāo)準(zhǔn)
49、庫(kù) #include<stdio.h>#include<math.h>#include<string.h>使用命名空間std的新標(biāo)準(zhǔn)庫(kù)#include<cstdio>#include<cmath>#include<cstring>using namespace std;優(yōu)質(zhì)文本12.1.3用using引用命名空間從外部直接訪問(wèn)命名空間中成員的方法:命名空間名+作用域運(yùn)算符限定using語(yǔ)句的兩種形式:using 命令:using namespace 命名空間名;當(dāng)前作用域可直接引用指定命名空間所有成員,但沒(méi)有將成員參加到當(dāng)
50、前作用域using聲明:using 命名空間名:成員;將指定命名空間的指定成員引入到當(dāng)前作用域,可以直接訪問(wèn)這個(gè)成員。當(dāng)前作用域不可聲明同名成員12.2函數(shù)模板12.2.1函數(shù)模板的概念函數(shù)模板的定義:template<class T1,class T2>返回類(lèi)型 函數(shù)名(參數(shù)表)函數(shù)體T是模板的類(lèi)型參數(shù),使用關(guān)鍵字class或typename定義類(lèi)型參數(shù)12.2.2函數(shù)模板的使用隱式:函數(shù)名實(shí)參;系統(tǒng)使用函數(shù)模板的步驟:編譯器根據(jù)實(shí)參類(lèi)型,推導(dǎo)出模板實(shí)參;編譯器將模板實(shí)參傳遞給模板形參,實(shí)例化函數(shù)模板,產(chǎn)生模板函數(shù);編譯器將函數(shù)調(diào)用與產(chǎn)生的模板函數(shù)進(jìn)行鏈接。顯式:函數(shù)名<模
51、板實(shí)參表>實(shí)參;12.2.3函數(shù)模板的重載與特例對(duì)于重載過(guò)程中的特殊情況用普通函數(shù)做個(gè)別處理在根本模板定義之后,補(bǔ)充模板特例template<>類(lèi)型名 函數(shù)名<類(lèi)型名>參數(shù)表前綴template<>表示這是模板特例,<類(lèi)型名>表示這個(gè)特例實(shí)在模板參數(shù)是該類(lèi)型時(shí)使用的可省略12.3類(lèi)模板12.3.1類(lèi)模板的定義類(lèi)模板定義的語(yǔ)法形式:template<模板參數(shù)表>class 類(lèi)名;類(lèi)模板的成員函數(shù)可在類(lèi)外定義,假設(shè)果該成員函數(shù)中有模板參數(shù)那么先進(jìn)行模板聲明,再用類(lèi)模板名,而不是用類(lèi)名做限定。12.3.2類(lèi)模板的使用實(shí)例化類(lèi)模板的語(yǔ)法
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)村出售地皮合同范本
- 出口定金合同范本
- 業(yè)務(wù)用車(chē)租賃合同范本
- 入股果園合同范例
- 第五單元第14課文藝復(fù)興運(yùn)動(dòng)2023-2024學(xué)年九年級(jí)上冊(cè)歷史同步教學(xué)設(shè)計(jì)(部編版)
- 專(zhuān)利實(shí)施使用合同范本
- epc項(xiàng)目銷(xiāo)售合同范本
- 2024年溫州龍港農(nóng)商銀行招聘筆試真題
- 借條合同范本范文
- 保安顧問(wèn)合同范本
- 幼兒園衛(wèi)生保健十三種表格
- 大灰狼兒童睡前故事大全
- 家長(zhǎng)進(jìn)課堂--小學(xué)生食品安全知識(shí)
- 酒店預(yù)訂確認(rèn)單
- 會(huì)計(jì)人才培養(yǎng)方案調(diào)研報(bào)告書(shū)
- 企業(yè)標(biāo)準(zhǔn)自我聲明公開(kāi)
- 大學(xué)生創(chuàng)新創(chuàng)業(yè)(微課版第3版)課件 第1、2章 了解創(chuàng)業(yè)規(guī)劃你的職業(yè)生涯、創(chuàng)新與創(chuàng)新思維
- E時(shí)代大學(xué)英語(yǔ)-讀寫(xiě)教程2 第四單元
- 四年級(jí)語(yǔ)文上冊(cè)第一單元單元整體教學(xué)設(shè)計(jì)
- 玩具安全標(biāo)準(zhǔn)測(cè)試培訓(xùn)-(SGS)課件
- 員工工資條模板
評(píng)論
0/150
提交評(píng)論