欧美精品一二区,性欧美一级,国产免费一区成人漫画,草久久久久,欧美性猛交ⅹxxx乱大交免费,欧美精品另类,香蕉视频免费播放

吉大課件C程序結(jié)構(gòu).ppt

上傳人:sh****n 文檔編號:14113513 上傳時間:2020-07-03 格式:PPT 頁數(shù):69 大小:529.31KB
收藏 版權(quán)申訴 舉報 下載
吉大課件C程序結(jié)構(gòu).ppt_第1頁
第1頁 / 共69頁
吉大課件C程序結(jié)構(gòu).ppt_第2頁
第2頁 / 共69頁
吉大課件C程序結(jié)構(gòu).ppt_第3頁
第3頁 / 共69頁

下載文檔到電腦,查找使用更方便

14.9 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《吉大課件C程序結(jié)構(gòu).ppt》由會員分享,可在線閱讀,更多相關(guān)《吉大課件C程序結(jié)構(gòu).ppt(69頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、-1-,C++ProgrammingLanguage,Dr.ZhengXiaojuanAssociateProfessorSoftwareCollegeofNortheastNormalUniversityOctober.2008,-2-,第五章程序結(jié)構(gòu),-3-,本章內(nèi)容,作用域與可見性生存期局部對象和全局對象靜態(tài)成員友元常類型編譯預(yù)處理,-4-,類本身可被定義在三種作用域內(nèi):1.全局作用域。全局類,絕大多數(shù)的C++類是定義在該作用域中,我們在前面定義的所有類都是在全局作用域中。2.在另一個類的作用域中。嵌套類,即一個類包含在另一個類中。3.在一個塊的局部作用域中。局部類,該類完全被塊包含。,

2、1作用域與可見性,-5-,2生存期,2.1靜態(tài)生存期1.定義:與程序的運行期相同。靜態(tài)生存期的變量程序開始運行就存在,直到程序運行結(jié)束生存期結(jié)束。具有文件作用域的變量具有靜態(tài)生存期。2.語法聲明:static。例如,staticintk;3.分配空間:在固定的數(shù)據(jù)區(qū)域內(nèi)分配空間。4.初始化:如果具有靜態(tài)生存期的變量未初始化,則自動初始化為0。5.靜態(tài)變量種類:全局變量、靜態(tài)局部變量。,-6-,運行時的存儲空間結(jié)構(gòu),目標(biāo)代碼空間,寄存器空間,靜態(tài)區(qū)空間,堆區(qū)空間棧區(qū)空間,,,,,,,,最大地址,最小地址,,,,,-7-,2.2局部生存期1.定義:在塊作用域中聲明的變量具有局部生存期。此生存期誕生

3、于聲明點,而終止于其作用域的結(jié)束處。2.局部變量種類:具有局部生存期的變量,具有塊作用域。塊作用域內(nèi)靜態(tài)變量,具有靜態(tài)生存期。例如:voidmain()staticintk;//...,,-8-,2.3動態(tài)生存期定義:由程序中特定的函數(shù)(malloc()和free())調(diào)用或由操作符(new和delete)創(chuàng)建和釋放。具有動態(tài)生存期的變量在內(nèi)存的堆區(qū)分配空間。,-9-,#includeclassClockprivate:intHour,Minute,Second;public:Clock()Hour=0;Minute=0;Second=0;,3局部對象和全局對象,-10-,voidSetTim

4、e(intNewH,intNewM,intNewS);voidShowTime();Clock();voidClock::SetTime(intNewH,intNewM,intNewS)Hour=NewH;Minute=NewM;Second=NewS;voidClock::ShowTime()cout<

5、kmyclock(globClock);cout<

6、tmain()cout<

7、變量,有全局壽命,局部可見。intb=-10;//b,c為局部變量,具有動態(tài)生存期。intc=0;voidother(void);cout<<---MAIN---n;cout<

8、化。intc=10;//C為局部變量,具有動態(tài)生存期,//每次進入函數(shù)時都初始化。a=a+2;i=i+32;c=c+5;cout<<---OTHER---n;cout<

9、態(tài)成員,-19-,4.1靜態(tài)數(shù)據(jù)成員類的普通數(shù)據(jù)成員:類的靜態(tài)數(shù)據(jù)成員:,在類的每一個對象中都擁有一個拷貝,每個對象的同名數(shù)據(jù)成員可以分別存儲不同的數(shù)值,這也是每個對象擁有自身特征的保證。,是類的數(shù)據(jù)成員的一種特例。每個類只有一個靜態(tài)數(shù)據(jù)成員拷貝,它由該類的所有對象共同維護和使用,從而實現(xiàn)了同一個類的不同對象之間的數(shù)據(jù)共享。靜態(tài)數(shù)據(jù)成員具有靜態(tài)生存期。,,-20-,2.應(yīng)用要點:(1)聲明:加static關(guān)鍵字說明。例如:staticintn(2)初始化:在定義時初始化,且必須在類和所有的成員函數(shù)之外,與全局變量初始化的方法一樣。不能在構(gòu)造函數(shù)中初始化。因為靜態(tài)數(shù)據(jù)成員在構(gòu)造函數(shù)被調(diào)用之前就已

10、經(jīng)存在了。形式:::=例如:intpoint::n=0;(3)引用:靜態(tài)數(shù)據(jù)成員屬于類,而不屬于任何一個對象,所以,在類外通過類名對它進行引用。一般形式如下:::;,-21-,(4)靜態(tài)數(shù)據(jù)成員訪問控制限制:private/protected:只能在類內(nèi)通過公有的靜態(tài)成員函數(shù)訪問,在類外無法引用。public:可以采用“類名::成員名”或“對象名.成員名”訪問。,,-22-,【例4】含有靜態(tài)數(shù)據(jù)成員。#includeclassTestprivate:intk;public:staticintn;Test(intkk)k=kk;n++;voidDisplay()cout<

11、k<

12、idmain()Testt1(10),t2(20);t1.Display();t2.Display();Test::n++;t2.Display();程序運行結(jié)果?,-25-,4.2靜態(tài)函數(shù)成員1.定義:使用static關(guān)鍵字聲明的函數(shù)成員。同靜態(tài)數(shù)據(jù)成員一樣,靜態(tài)函數(shù)成員也屬于整個類,由同一個類的所有對象共同維護,為這些對象所共享。2.靜態(tài)成員函數(shù)如何訪問成員數(shù)據(jù):靜態(tài)的成員函數(shù)沒有this指針(1)訪問靜態(tài)成員數(shù)據(jù),可以直接使用其變量名來訪問;(2)訪問非靜態(tài)成員數(shù)據(jù),需要使用“對象名.成員名”;3.公有的、靜態(tài)的成員函數(shù)在類外的調(diào)用方式:類名::成員函數(shù)名(實參表)4.允許用對象調(diào)用靜態(tài)

13、的成員函數(shù)。,-26-,【例5】使用靜態(tài)函數(shù)成員。#includeclassMpublic:M(inta)A=a;B+=a;staticvoidf1(Mm);private:intA;staticintB;;,voidM::f1(Mm)cout<<“A=“<

14、te:intx;public:staticvoidf(Aa);;voidA::f(Aa)cout<

15、t_x()<<,<

16、非成員函數(shù)對它訪問,但在某些場合下,非成員函數(shù)體中需要通過對象名訪問private成員,這可以通過友元函數(shù)來實現(xiàn)。(2)有些函數(shù)需要放在外面或者類設(shè)計完后補充的,而不能成為成員函數(shù),但是又需要訪問類中的私有成員。3.作用:實現(xiàn)直接訪問數(shù)據(jù)。,-31-,5.1友元函數(shù)1.定義:如果友元是普通函數(shù)或類的成員函數(shù),則稱為友元函數(shù)。友元函數(shù)是在類聲明中由關(guān)鍵字friend修飾的非成員函數(shù)。2.語法:(1)普通函數(shù)聲明為友元函數(shù)的形式:friend(參數(shù)表)(2)成員函數(shù)聲明為友元函數(shù)的形式:friend::(參數(shù)表),-32-,3.應(yīng)用要點:(1)友元函數(shù)的聲明可以在類聲明中的任何位置,既可在publ

17、ic區(qū),也可在protected區(qū),意義完全一樣。(2)友元函數(shù)的定義一般放在類的外部,最好與類的其它成員函數(shù)定義放在一起。如果是普通函數(shù)作為友元,也可以放在類中。(3)友元函數(shù)不是本類的成員函數(shù),但是它可以通過對象名訪問類的所有成員,包括私有和保護成員。(4)要慎用友元。,-33-,【例】普通函數(shù)作友元函數(shù)。#include#includeclasspointprivate:doublex,y;public:point(doublexx=0,doubleyy=0)x=xx;y=yy;doubleget_x()returnx;doubleget_y()returny;frienddoubled

18、istance(point,-34-,doubledistance(point,-35-,【例】成員函數(shù)作友元函數(shù)。#include#includeclasspoint;//前向聲明point類classApublic:doubledistance(point,-36-,public:point(doublexx=0,doubleyy=0)x=xx;y=yy;doubleget_x()returnx;doubleget_y()returny;frienddoubleA::distance(point,-37-,voidmain()pointmyp1(1,1),myp2(4,5);Aobj;//

19、聲明一個A類的對象cout<

20、便性折中,,,,-39-,5.2友元類1.如果友元是一個類,則稱為友元類。2.語法聲明形式:friendclass3.應(yīng)用要點:(1)友元類的聲明同樣可以在類聲明中的任何位置。(2)友元類的所有成員函數(shù)都成為友元函數(shù)。例如,若A類為B類的友元類,則A類的所有成員函數(shù)都是B類的友元函數(shù),都可以訪問B類的私有和保護成員。,-40-,用友元類的方法重做例8。#include#includeclasspoint;//前向聲明point類classApublic:doubledistance(pointclasspoint,-41-,private:doublex,y;public:point(doub

21、lexx=0,doubleyy=0)x=xx;y=yy;doubleget_x()returnx;doubleget_y()returny;friendclassA;//A類為友元類;doubleA::distance(point,-42-,voidmain()pointmyp1(1,1),myp2(4,5);Aobj;//必須聲明一個A類的對象cout<

22、類是B類的友元,C類和A類之間如果沒有聲明,就沒有任何友元關(guān)系,不能進行數(shù)據(jù)共享。友無關(guān)系是單向的。如果聲明B類是A類的友元,B類的成員函數(shù)就可以訪問A類的私有和保護數(shù)據(jù),但A類的成員函數(shù)卻不能訪問B類的私有和保護數(shù)據(jù)。,-44-,1.功能:類型修飾符,左結(jié)合。用來凍結(jié)一個變量的值,使其值在程序中不能被進一步改變(置成只讀屬性,即變?yōu)槌A浚?.定義:const類型定義符變量名=初值;(當(dāng)T是一個簡單數(shù)據(jù)類型時Tconst=constT)例如:constintsumValue=10;(或intconstsumValue=10;)3.應(yīng)用要點:(1)替代C中的預(yù)處理命令#define,但比它更加

23、語義精確,因為#define無法反映常量的數(shù)據(jù)類型。如:#definesumValue=10//此時的sumValue是char型還是int型,6常類型(const),-45-,(2)對變量經(jīng)const修飾后,必須給變量賦初值(但函數(shù)的形參不需賦初值),一經(jīng)const修飾后便不能修改此變量之值constintsumValue=10;sumValue=0;//錯誤voidDisplay(constint*a,intn)cout<

24、向常對象的指針變量:constint*p=p0=2.,constint*pint*constp=,,-47-,()C++視const修飾的符號名為常量特性,因而它可以用于任何可能出現(xiàn)數(shù)字常量的場合(如數(shù)組的大小的說明等).constintArraySize=10;chararrayArraySize;()由于C++視const修飾的符號名為常量特性,因而并不對它實際分配內(nèi)存空間constintsumValue=10;//不實際分配內(nèi)存空間intsumValue=10;//實際分配內(nèi)存空間(兩個字節(jié))()#define所定義的符號名為全局性常量,因而在整個程序中應(yīng)保持唯一性;而const可以說明

25、一個局部或全局性同名常量(據(jù)此可以改變const符號名之值),-48-,#defineMin1constintMax=100voidmain(void)#defineMin2//錯誤,不能再定義同名常量constintMax=200//可以再定義同名局部常量,-49-,7.1常引用定義:使用const關(guān)鍵字聲明的引用稱為常引用。常引用所引用的對象不能被更新。語法:常引用的聲明形式:constconstint這段程序編譯時有兩個錯誤:errorC2530:m:referencesmustbeinitializederrorC2166:l-valuespecifiesconstobject,-51

26、-,將上述程序稍作修改,#includevoidmain()intn=5;constint這時,程序運行結(jié)果為m=5,-52-,【例10】常引用作形參。#includevoiddisplay(constdoubleerrorC2166:l-valuespecifiesconstobject,常引用做形參時,函數(shù)不能更新r所引用的對象,因此,對應(yīng)的實參就不會被破壞。,-53-,7.2常對象定義:使用const關(guān)鍵字聲明的對象稱為常對象。語法:常對象的聲明形式:const或const聲明常對象的同時,也要進行初始化,而且該對象以后不能再被更新。classAprivate:intx,y;,-54-,

27、public:A(inti=0,intj=0)x=i;y=j;//...;Acobj1;Aconstcobj2(3,4);cobj1.print();cobj2.print();X//...errorC2662:print:cannotconvertthispointerfromconstclassAtoclassA3目的:const成員函數(shù)表示該成員函數(shù)只能讀類數(shù)據(jù)成員,而不能修改類成員數(shù)據(jù)。即在不改變對象的成員函數(shù)的函數(shù)原型中加上const說明??商岣叱绦虻目勺x性。還能提高程序的可靠性,已定義成const的成員函數(shù),一旦企圖修改數(shù)據(jù)成員的值,則編譯器按錯誤處理。4應(yīng)用要點:const是加在

28、函數(shù)聲明后面的類型修飾符,它是函數(shù)類型的一個組成部分,因此,在實現(xiàn)部分也要帶const關(guān)鍵字。,如果將const放在函數(shù)聲明前意味著函數(shù)的返回值是常量,意義完全不同。,-56-,const關(guān)鍵字可以被用于對重載函數(shù)的區(qū)分。例如,可以在類中這樣聲明:voidfun();voidfun()const;常成員函數(shù)不能更新對象的數(shù)據(jù)成員,也不能調(diào)用該類中沒有用const修飾的成員函數(shù)。如果將一個對象說明為常對象,則通過該對象只能調(diào)用它的常成員函數(shù),而不能調(diào)用其它成員函數(shù)。在C++中,const對象只能調(diào)用const成員函數(shù),-57-,【例11】常成員函數(shù)。#includeclassAprivate:i

29、ntx,y;public:A(inti=0,intj=0)x=i;y=j;voidfun()//成員函數(shù)cout<<成員函數(shù):x=<

30、常數(shù)據(jù)成員1.定義:使用關(guān)鍵字const說明的數(shù)據(jù)成員。包括常引用、常對象等,常數(shù)據(jù)成員不能被更新.2.初始化:用成員初始化列表的方式通過構(gòu)造函數(shù)對該數(shù)據(jù)成員進行初始化。,-60-,【例12】常數(shù)據(jù)成員。#includeclassAprivate:constintx;//常數(shù)據(jù)成員staticconstinty;//靜態(tài)常數(shù)據(jù)成員public:constint//常引用,本程序有三個常數(shù)據(jù)成員,-61-,A(inti):x(i),r(x)//常數(shù)據(jù)成員通過初始化列表獲得初值voidfun()cout<

31、靜態(tài)常數(shù)據(jù)成員的初始化voidmain()Aobj1(1),obj2(2);obj1.fun();obj2.fun();,程序運行結(jié)果為:x=1,y=5,r=1x=2,y=5,r=2,-62-,編譯預(yù)處理,1.定義:預(yù)處理程序又稱為預(yù)處理器,它包含在編譯器中。預(yù)處理程序提供了一組編譯預(yù)處理指令和預(yù)處理操作符。編譯器在對源程序進行編譯之前,首先要由預(yù)處理程序?qū)Τ绦蛭谋具M行預(yù)處理,然后編譯器接受預(yù)處理程序的輸出,并將源代碼轉(zhuǎn)化成用機器語言編寫的目標(biāo)文件。預(yù)處理指令實際上不是C++語言的一部分,它只是用來擴充C++程序設(shè)計的環(huán)境。,-63-,需預(yù)處理的源程序,,預(yù)處理器,,源程序,,編譯程序,,目標(biāo)

32、匯編程序,,匯編程序,,可重定位的目標(biāo)代碼,,連接/裝配程序,,絕對目標(biāo)代碼,高級語言程序到可執(zhí)行代碼的轉(zhuǎn)換過程,-64-,2.使用預(yù)處理指令需要注意以下幾點:所有的預(yù)處理指令在程序中都是以“#”來引導(dǎo)。每一條預(yù)處理指令單獨占用一行,不需要用分號結(jié)束。預(yù)處理指令可以根據(jù)需要出現(xiàn)在程序中的任何位置。3.預(yù)處理指令:,-65-,(1)#include指令1)定義:#include指令也稱文件包含指令,其作用是將另一個源文件嵌入到當(dāng)前源文件中該點處。2)語法及功能:格式1:#include功能:按標(biāo)準(zhǔn)方式搜索C++系統(tǒng)目錄下的include子目錄。格式2:#include“文件名”功能:首先在當(dāng)前目

33、錄中搜索,若沒有,再按標(biāo)準(zhǔn)方式搜索。,-66-,(2)#define和#undef指令1)定義:C,#define符號常量帶參數(shù)的宏。#definePI3.14//定義了一個符號常量PI#defineMAX(a,b)((a)(b)?(a):(b))//定義一個帶參數(shù)的宏MAX(a,b)仍可這樣定義被const替代inline內(nèi)嵌函數(shù)#undef的作用是刪除由#define定義的宏,使之不再起作用。,,,C++,,,-67-,(3)條件編譯指令1)定義:限定程序中的某些內(nèi)容要在滿足一定條件的情況下才參與編譯。利用條件編譯可以使同一個源程序在不同的編譯條件下產(chǎn)生不同的目標(biāo)代碼。2)語法:形式1:#

34、ifdef標(biāo)識符程序段1#else程序段2#endif,如果“標(biāo)識符”已經(jīng)定義過,則編譯程序段1,否則編譯程序段2;如果沒有程序段2,則#else可以省略。,-68-,形式2:#ifndef標(biāo)識符程序段1#else程序段2#endif例:#ifndefMYHEAD_H#defineMYHEAD_H#endif本段代碼能夠保證符號MYHEAD_H只有一次定義。,如果“標(biāo)識符”未被定義過,則編譯程序段1,否則編譯程序段2;如果沒有程序段2,則#else可以省略。,-69-,由于文件包含指令可以嵌套使用,在設(shè)計程序時要避免多次重復(fù)包含統(tǒng)一個頭文件,否則會引起變量及類的重復(fù)定義。,//main.cpp#include“file1.h”#include“file2.h”intmain()//file1.h#include“head.h”//file2.h#include“head.h”//head.hclasspoint,//head.h#ifndefHEAD_H#defineHEAD_HClassPoint#enddif,

展開閱讀全文
溫馨提示:
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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!