九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > PPT文檔下載  

C語言程序設計清華大學鄭莉第五章C程序的結構.ppt

  • 資源ID:11494862       資源大小:381.50KB        全文頁數(shù):58頁
  • 資源格式: PPT        下載積分:14.9積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要14.9積分
郵箱/手機:
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機號,方便查詢和重復下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗證碼:   換一換

 
賬號:
密碼:
驗證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認打開,此種情況可以點擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標題沒有明確說明有答案則都視為沒有答案,請知曉。

C語言程序設計清華大學鄭莉第五章C程序的結構.ppt

第五章C+程序的結構,清華大學鄭莉,C+語言程序設計,2,本章主要內容,作用域與可見性對象的生存期數(shù)據(jù)與函數(shù)靜態(tài)成員共享數(shù)據(jù)的保護友元編譯預處理命令多文件結構和工程,3,函數(shù)原形的作用域,函數(shù)原型中的參數(shù),其作用域始于"(",結束于")"。例如,設有下列原型聲明:doubleArea(doubleradius);,radius的作用域僅在于此,不能用于程序正文其他地方,因而可有可無。,作用域與可見性,4,塊作用域,在塊中聲明的標識符,其作用域自聲明處起,限于塊中,例如:voidfun(inta)intb(a);cin>>b;if(b>0)intc;.,作用域與可見性,5,類作用域,類作用域作用于特定的成員名。類X的成員M具有類作用域,對M的訪問方式如下:如果在X的成員函數(shù)中沒有聲明同名的局部作用域標識符,那么在該函數(shù)內可以訪問成員M。通過表達式x.M或者X:M訪問。通過表達式prt->M,作用域與可見性,6,文件作用域,不在前述各個作用域中出現(xiàn)的聲明,具有文件作用域,這樣聲明的標識符的作用域開始于聲明點,結束于文件尾。,作用域與可見性,7,可見性,可見性是從對標識符的引用的角度來談的概念可見性表示從內層作用域向外層作用域“看”時能看見什么。如果標識在某處可見,則就可以在該處引用此標識符。,作用域與可見性,8,可見性,標識符應聲明在先,引用在后。如果某個標識符在外層中聲明,且在內層中沒有同一標識符的聲明,則該標識符在內層可見。對于兩個嵌套的作用域,如果在內層作用域內聲明了與外層作用域中同名的標識符,則外層作用域的標識符在內層不可見。,作用域與可見性,9,同一作用域中的同名標識符,在同一作用域內的對象名、函數(shù)名、枚舉常量名會隱藏同名的類名或枚舉類型名。重載的函數(shù)可以有相同的函數(shù)名。,作用域與可見性,10,#includeinti;/文件作用域intmain()i=5;inti;/塊作用域i=7;cout<<"i="<<i<<endl;/輸出7cout<<"i="<<i;/輸出5return0;,作用域與可見性,例5.1,11,對象的生存期,對象從產生到結束的這段時間就是它的生存期。在對象生存期內,對象將保持它的值,直到被更新為止。,12,靜態(tài)生存期,這種生存期與程序的運行期相同。在文件作用域中聲明的對象具有這種生存期。在函數(shù)內部聲明靜態(tài)生存期對象,要冠以關鍵字static。,對象的生存期,13,#includeinti=5;/文件作用域intmain()cout<<"i="<<i<<endl;return0;i具有靜態(tài)生存期,對象的生存期,例,14,動態(tài)生存期,塊作用域中聲明的,沒有用static修是的對象是動態(tài)生存期的對象(習慣稱局部生存期對象)。開始于程序執(zhí)行到聲明點時,結束于命名該標識符的作用域結束處。,對象的生存期,15,#includevoidfun();intmain()fun();fun();voidfun()staticinta=1;inti=5;a+;i+;cout<<"i="<<i<<",a="<<a<<endl;,運行結果:i=6,a=2i=6,a=3i是動態(tài)生存期a是靜態(tài)生存期,對象的生存期,例,16,例5-2變量的生存期與可見性,#includeinti=1;/i為全局變量,具有靜態(tài)生存期。intmain()staticinta;/靜態(tài)局部變量,有全局壽命,局部可見。intb=-10;/b,c為局部變量,具有動態(tài)生存期。intc=0;voidother(void);cout<<"-MAIN-n"cout<<"i:"<<i<<"a:"<<a<<"b:"<<b<<"c:"<<c<<endl;c=c+8;other();cout<<"-MAIN-n"cout<<"i:"<<i<<"a:"<<a<<"b:"<<b<<"c:"<<c<<endl;i=i+10;other();,對象的生存期,voidother(void)staticinta=2;staticintb;/a,b為靜態(tài)局部變量,具有全局壽命,局部可見。/只第一次進入函數(shù)時被初始化。intc=10;/C為局部變量,具有動態(tài)生存期,/每次進入函數(shù)時都初始化。a=a+2;i=i+32;c=c+5;cout<<"-OTHER-n"cout<<"i:"<<i<<"a:"<<a<<"b:"<<b<<"c:"<<c<<endl;b=a;,17,運行結果:-MAIN-i:1a:0b:-10c:0-OTHER-i:33a:4b:0c:15-MAIN-i:33a:0b:-10c:8-OTHER-i:75a:6b:4c:15,18,19,例5-3具有靜態(tài)、動態(tài)生存期對象的時鐘程序,#includeclassClock/時鐘類聲明public:/外部接口Clock();voidSetTime(intNewH,intNewM,intNewS);/三個形參均具有函數(shù)原型作用域voidShowTime();Clock()private:/私有數(shù)據(jù)成員intHour,Minute,Second;,對象的生存期,/時鐘類成員函數(shù)實現(xiàn)Clock:Clock()/構造函數(shù)Hour=0;Minute=0;Second=0;voidClock:SetTime(intNewH,intNewM,intNewS)Hour=NewH;Minute=NewM;Second=NewS;voidClock:ShowTime()cout<<Hour<<":"<<Minute<<":"<<Second<<endl;,20,ClockglobClock;/聲明對象globClock,/具有靜態(tài)生存期,文件作用域intmain()/主函數(shù)cout<<"Firsttimeoutput:"<<endl;/引用具有文件作用域的對象:globClock.ShowTime();/對象的成員函數(shù)具有類作用域globClock.SetTime(8,30,30);ClockmyClock(globClock);/聲明具有塊作用域的對象myClockcout<<"Secondtimeoutput:"<<endl;myClock.ShowTime();/引用具有塊作用域的對象,21,程序的運行結果為:Firsttimeoutput:0:0:0Secondtimeoutput:8:30:30,22,23,數(shù)據(jù)與函數(shù),數(shù)據(jù)存儲在局部對象中,通過參數(shù)傳遞實現(xiàn)共享函數(shù)間的參數(shù)傳遞。數(shù)據(jù)存儲在全局對象中。將數(shù)據(jù)和使用數(shù)據(jù)的函數(shù)封裝在類中。,數(shù)據(jù)與函數(shù),24,使用全局對象,#includeintglobal;voidf()global=5;voidg()cout<<global<<endl;intmain()f();g();/輸出“5”return0;,數(shù)據(jù)與函數(shù),25,將函數(shù)與數(shù)據(jù)封裝,#includeclassApplicationpublic:voidf();voidg();private:intglobal;voidApplication:f()global=5;voidApplication:g()cout<<global<<endl;,intmain()ApplicationMyApp;MyApp.f();MyApp.g();return0;,數(shù)據(jù)與函數(shù),26,靜態(tài)成員,靜態(tài)數(shù)據(jù)成員用關鍵字static聲明該類的所有對象維護該成員的同一個拷貝必須在類外定義和初始化,用(:)來指明所屬的類。靜態(tài)成員函數(shù)類外代碼可以使用類名和作用域操作符來調用靜態(tài)成員函數(shù)。靜態(tài)成員函數(shù)只能直接引用屬于該類的靜態(tài)數(shù)據(jù)成員或靜態(tài)成員函數(shù)。,靜態(tài)成員,27,例5-4具有靜態(tài)數(shù)據(jù)成員的Point類,#includeusingnamespacestd;classPointpublic:Point(intxx=0,intyy=0)X=xx;Y=yy;countP+;Point(Point,靜態(tài)成員,Point:Point(Point,28,29,靜態(tài)成員函數(shù)舉例,#includeclassApplicationpublic:staticvoidf();staticvoidg();private:staticintglobal;intApplication:global=0;,voidApplication:f()global=5;voidApplication:g()cout<<global<<endl;intmain()Application:f();Application:g();return0;,靜態(tài)成員,30,靜態(tài)成員函數(shù)舉例,classApublic:staticvoidf(Aa);private:intx;voidA:f(Aa)cout<<x;/對x的引用是錯誤的cout<<a.x;/正確,靜態(tài)成員,31,具有靜態(tài)數(shù)據(jù)、函數(shù)成員的Point類,#includeclassPoint/Point類聲明public:/外部接口Point(intxx=0,intyy=0)X=xx;Y=yy;countP+;Point(Point,靜態(tài)成員,Point:Point(Point/輸出對象號,類名引用,32,33,友元,友元是C+提供的一種破壞數(shù)據(jù)封裝和數(shù)據(jù)隱藏的機制。通過將一個模塊聲明為另一個模塊的友元,一個模塊能夠引用到另一個模塊中本是被隱藏的信息??梢允褂糜言瘮?shù)和友元類。為了確保數(shù)據(jù)的完整性,及數(shù)據(jù)封裝與隱藏的原則,建議盡量不使用或少使用友元。,友元,34,友元函數(shù),友元函數(shù)是在類聲明中由關鍵字friend修飾說明的非成員函數(shù),在它的函數(shù)體中能夠通過對象名訪問private和protected成員作用:增加靈活性,使程序員可以在封裝和快速性方面做合理選擇。訪問對象中的成員必須通過對象名。,友元,35,例5-6使用友元函數(shù)計算兩點距離,#include#includeclassPoint/Point類聲明public:/外部接口Point(intxx=0,intyy=0)X=xx;Y=yy;intGetX()returnX;intGetY()returnY;friendfloatDistance(Point,友元,doubleDistance(Point,36,37,友元類,若一個類為另一個類的友元,則此類的所有成員都能訪問對方類的私有成員。聲明語法:將友元類名在另一個類中使用friend修飾說明。,友元,38,友元類舉例,classAfriendclassB;public:voidDisplay()cout<<x<<endl;private:intx;classBpublic:voidSet(inti);voidDisplay();private:Aa;,友元,voidB:Set(inti)a.x=i;voidB:Display()a.Display();,39,40,友元關系是單向的,如果聲明B類是A類的友元,B類的成員函數(shù)就可以訪問A類的私有和保護數(shù)據(jù),但A類的成員函數(shù)卻不能訪問B類的私有、保護數(shù)據(jù)。,41,常類型,常類型的對象必須進行初始化,而且不能被更新。常引用:被引用的對象不能被更新。const類型說明符y=j;.private:intx,y;Aconsta(3,4);/a是常對象,不能被更新,共享數(shù)據(jù)的保護,44,用const修飾的對象成員,常成員函數(shù)使用const關鍵字說明的函數(shù)。常成員函數(shù)不更新對象的數(shù)據(jù)成員。常成員函數(shù)說明格式:類型說明符函數(shù)名(參數(shù)表)const;這里,const是函數(shù)類型的一個組成部分,因此在實現(xiàn)部分也要帶const關鍵字。const關鍵字可以被用于參與對重載函數(shù)的區(qū)分通過常對象只能調用它的常成員函數(shù)。常數(shù)據(jù)成員使用const說明的數(shù)據(jù)成員。,共享數(shù)據(jù)的保護,45,例5-8常成員函數(shù)舉例,#includeclassRpublic:R(intr1,intr2)R1=r1;R2=r2;voidprint();voidprint()const;private:intR1,R2;,共享數(shù)據(jù)的保護,voidR:print()cout<<R1<<":"<<R2<<endl;voidR:print()constcout<<R1<<""<<R2<<endl;intmain()Ra(5,4);a.print();/調用voidprint()constRb(20,52);b.print();/調用voidprint()const,46,47,例5-9常數(shù)據(jù)成員舉例,#includeclassApublic:A(inti);voidprint();constint,共享數(shù)據(jù)的保護,constintA:b=10;A:A(inti):a(i),r(a)/?voidA:print()cout<<a<<":"<<b<<":"<<r<<endl;intmain()/*建立對象a和b,并以100和0作為初值,分別調用構造函數(shù),通過構造函數(shù)的初始化列表給對象的常數(shù)據(jù)成員賦初值*/Aa1(100),a2(0);a1.print();a2.print();,48,49,編譯預處理命令,#include包含指令將一個源文件嵌入到當前源文件中該點處。#include按標準方式搜索,文件位于C+系統(tǒng)目錄的include子目錄下#include"文件名"首先在當前目錄中搜索,若沒有,再按標準方式搜索。#define宏定義指令定義符號常量,很多情況下已被const定義語句取代。定義帶參數(shù)宏,已被內聯(lián)函數(shù)取代。#undef刪除由#define定義的宏,使之不再起作用。,50,條件編譯指令#if和#endif,#if常量表達式/當“常量表達式”非零時編譯程序正文#endif.,編譯預處理命令,51,條件編譯指令#else,#if常量表達式/當“常量表達式”非零時編譯程序正文1#else/當“常量表達式”為零時編譯程序正文2#endif,編譯預處理命令,52,條件編譯指令#elif,#if常量表達式1程序正文1/當“常量表達式1”非零時編譯#elif常量表達式2程序正文2/當“常量表達式2”非零時編譯#else程序正文3/其他情況下編譯#endif,編譯預處理命令,53,條件編譯指令,#ifdef標識符程序段1#else程序段2#endif如果“標識符”經(jīng)#defined定義過,且未經(jīng)undef刪除,則編譯程序段1,否則編譯程序段2。,編譯預處理命令,54,條件編譯指令,#ifndef標識符程序段1#else程序段2#endif如果“標識符”未被定義過,則編譯程序段1,否則編譯程序段2。,編譯預處理命令,55,多文件結構(例5-10),一個源程序可以劃分為多個源文件:類聲明文件(.h文件)類實現(xiàn)文件(.cpp文件)類的使用文件(main()所在的.cpp文件)利用工程來組合各個文件。,56,不使用條件編譯的頭文件,/main.cpp#include"file1.h"#include"file2.h"intmain()/file1.h#include"head.h",/file2.h#include"head.h"/head.hclassPoint,多文件結構,57,使用條件編譯的頭文件,/head.h#ifndefHEAD_H#defineHEAD_HclassPoint#endif,多文件結構,58,小結與復習建議,主要內容作用域與可見性、對象的生存期、數(shù)據(jù)的共享與保護、友元、編譯預處理命令、多文件結構和工程達到的目標深入理解程序的結構、模塊間的關系、數(shù)據(jù)共享。實驗任務實驗五,

注意事項

本文(C語言程序設計清華大學鄭莉第五章C程序的結構.ppt)為本站會員(max****ui)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對上載內容本身不做任何修改或編輯。 若此文所含內容侵犯了您的版權或隱私,請立即通知裝配圖網(wǎng)(點擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因為網(wǎng)速或其他原因下載失敗請重新下載,重復下載不扣分。




關于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

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

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


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