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

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

C清華大學(xué)出版社第四版課件第五章.ppt

  • 資源ID:8297203       資源大?。?span id="24d9guoke414" class="font-tahoma">586.50KB        全文頁(yè)數(shù):68頁(yè)
  • 資源格式: PPT        下載積分:14.9積分
快捷下載 游客一鍵下載
會(huì)員登錄下載
微信登錄下載
三方登錄下載: 微信開(kāi)放平臺(tái)登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要14.9積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫(xiě)的郵箱或者手機(jī)號(hào),方便查詢和重復(fù)下載(系統(tǒng)自動(dòng)生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

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

C清華大學(xué)出版社第四版課件第五章.ppt

第五章C 程序的結(jié)構(gòu) 東華理工大學(xué)信息工程學(xué)院 C 語(yǔ)言程序設(shè)計(jì) 2 本章主要內(nèi)容 作用域與可見(jiàn)性對(duì)象的生存期數(shù)據(jù)與函數(shù)靜態(tài)成員共享數(shù)據(jù)的保護(hù)友元編譯預(yù)處理命令多文件結(jié)構(gòu)和工程深度探索 3 函數(shù)原形的作用域 函數(shù)原型中的參數(shù) 其作用域始于 結(jié)束于 例如 設(shè)有下列原型聲明 doublearea doubleradius radius的作用域僅在于此 不能用于程序正文其他地方 因而可有可無(wú) 作用域與可見(jiàn)性 4 局部作用域 函數(shù)的形參 在塊中聲明的標(biāo)識(shí)符 其作用域自聲明處起 限于塊中 例如 voidfun inta intb a cin b if b 0 intc 作用域與可見(jiàn)性 a的作用域 5 類作用域 類作用域作用于特定的成員名 類X的成員m具有類作用域 對(duì)m的訪問(wèn)方式如下 如果在X的成員函數(shù)中沒(méi)有聲明同名的局部作用域標(biāo)識(shí)符 那么在該函數(shù)內(nèi)可以訪問(wèn)成員m 通過(guò)表達(dá)式x m或者X m訪問(wèn) 通過(guò)表達(dá)式ptr M 作用域與可見(jiàn)性 6 命名空間 命名空間可以解決類名 函數(shù)名等的命名沖突命名空間的聲明namespace命名空間名 各種聲明 函數(shù)聲明 類聲明 例namespaceSomeNs classSomeClass 特殊的命名空間全局命名空間 默認(rèn)的命名空間匿名命名空間 對(duì)每個(gè)源文件是唯一的 作用域與可見(jiàn)性 命名空間作用域 一個(gè)命名空間確定了一個(gè)命名空間作用域引用其它命名空間作用域中的標(biāo)識(shí)符命名空間名 標(biāo)識(shí)符名例 聲明一個(gè)SomeClass型的對(duì)象SomeNs SomeClassobj1 將其它命名空間作用域的標(biāo)識(shí)符暴露于當(dāng)前作用域?qū)χ付?biāo)識(shí)符using命名空間名 標(biāo)識(shí)符名 對(duì)所有標(biāo)識(shí)符usingnamespace命名空間名 7 作用域與可見(jiàn)性 8 可見(jiàn)性 可見(jiàn)性是從對(duì)標(biāo)識(shí)符的引用的角度來(lái)談的概念可見(jiàn)性表示從內(nèi)層作用域向外層作用域 看 時(shí)能看見(jiàn)什么 如果標(biāo)識(shí)在某處可見(jiàn) 則就可以在該處引用此標(biāo)識(shí)符 作用域與可見(jiàn)性 9 可見(jiàn)性 標(biāo)識(shí)符應(yīng)聲明在先 引用在后 如果某個(gè)標(biāo)識(shí)符在外層中聲明 且在內(nèi)層中沒(méi)有同一標(biāo)識(shí)符的聲明 則該標(biāo)識(shí)符在內(nèi)層可見(jiàn) 對(duì)于兩個(gè)嵌套的作用域 如果在內(nèi)層作用域內(nèi)聲明了與外層作用域中同名的標(biāo)識(shí)符 則外層作用域的標(biāo)識(shí)符在內(nèi)層不可見(jiàn) 作用域與可見(jiàn)性 10 同一作用域中的同名標(biāo)識(shí)符 在同一作用域內(nèi)的對(duì)象名 函數(shù)名 枚舉常量名會(huì)隱藏同名的類名或枚舉類型名 重載的函數(shù)可以有相同的函數(shù)名 作用域與可見(jiàn)性 11 includeusingnamespacestd inti 在全局命名空間中的全局變量namespaceNs intj 在Ns命名空間中的全局變量 intmain i 5 為全局變量i賦值Ns j 6 為全局變量j賦值 子塊1usingnamespaceNs 當(dāng)前塊中可以直接引用Ns中的標(biāo)識(shí)符inti 局部變量 局部作用域i 7 cout i i endl 輸出7cout j j endl 輸出6 cout i i endl 輸出5return0 作用域與可見(jiàn)性 例5 1 12 對(duì)象的生存期 對(duì)象從產(chǎn)生到結(jié)束的這段時(shí)間就是它的生存期 在對(duì)象生存期內(nèi) 對(duì)象將保持它的值 直到被更新為止 13 靜態(tài)生存期 這種生存期與程序的運(yùn)行期相同 在文件作用域中聲明的對(duì)象具有這種生存期 在函數(shù)內(nèi)部聲明靜態(tài)生存期對(duì)象 要冠以關(guān)鍵字static 對(duì)象的生存期 14 includeusingnamespacestd inti 5 文件作用域intmain cout i i endl return0 i具有靜態(tài)生存期 對(duì)象的生存期 例 15 動(dòng)態(tài)生存期 塊作用域中聲明的 沒(méi)有用static修是的對(duì)象是動(dòng)態(tài)生存期的對(duì)象 習(xí)慣稱局部生存期對(duì)象 開(kāi)始于程序執(zhí)行到聲明點(diǎn)時(shí) 結(jié)束于命名該標(biāo)識(shí)符的作用域結(jié)束處 對(duì)象的生存期 16 includeusingnamespacestd voidfun intmain fun fun voidfun staticinta 1 inti 5 a i cout i i a a endl 運(yùn)行結(jié)果 i 6 a 2i 6 a 3i是動(dòng)態(tài)生存期a是靜態(tài)生存期 對(duì)象的生存期 例 17 例5 2變量的生存期與可見(jiàn)性 includeusingnamespacestd inti 1 i為全局變量 具有靜態(tài)生存期 voidother staticinta 2 staticintb a b為靜態(tài)局部變量 具有全局壽命 局部可見(jiàn) 只第一次進(jìn)入函數(shù)時(shí)被初始化 intc 10 C為局部變量 具有動(dòng)態(tài)生存期 每次進(jìn)入函數(shù)時(shí)都初始化 a 2 i 32 c 5 cout OTHER n cout i i a a b b c c endl b a 對(duì)象的生存期 intmain staticinta 靜態(tài)局部變量 有全局壽命 局部可見(jiàn) intb 10 b c為局部變量 具有動(dòng)態(tài)生存期 intc 0 cout MAIN n cout i i a a b b c c endl c 8 other cout MAIN n cout i i a a b b c c endl i 10 other return0 17 運(yùn)行結(jié)果 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 20 例5 3具有靜態(tài) 動(dòng)態(tài)生存期對(duì)象的時(shí)鐘程序 includeusingnamespacestd classClock 時(shí)鐘類定義public 外部接口Clock voidsetTime intnewH intnewM intnewS 三個(gè)形參均具有函數(shù)原型作用域voidshowTime private 私有數(shù)據(jù)成員inthour minute second 對(duì)象的生存期 Clock Clock hour 0 minute 0 second 0 構(gòu)造函數(shù)voidClock setTime intnewH intnewM intnewS 三個(gè)形參均具有局部作用域hour newH minute newM second newS voidClock showTime cout hour minute second endl 20 ClockglobClock 聲明對(duì)象globClock 具有靜態(tài)生存期 文件作用域intmain 主函數(shù)cout Firsttimeoutput endl 引用具有文件作用域的對(duì)象 globClock showTime 對(duì)象的成員函數(shù)具有類作用域globClock setTime 8 30 30 ClockmyClock globClock 聲明具有塊作用域的對(duì)象myClockcout Secondtimeoutput endl myClock showTime 引用具有塊作用域的對(duì)象return0 21 程序的運(yùn)行結(jié)果為 Firsttimeoutput 0 0 0Secondtimeoutput 8 30 30 22 24 數(shù)據(jù)與函數(shù) 數(shù)據(jù)存儲(chǔ)在局部對(duì)象中 通過(guò)參數(shù)傳遞實(shí)現(xiàn)共享 函數(shù)間的參數(shù)傳遞 數(shù)據(jù)存儲(chǔ)在全局對(duì)象中 將數(shù)據(jù)和使用數(shù)據(jù)的函數(shù)封裝在類中 數(shù)據(jù)與函數(shù) 25 使用全局對(duì)象 includeusingnamespacestd intglobal voidf global 5 voidg cout global endl intmain f g 輸出 5 return0 數(shù)據(jù)與函數(shù) 26 將函數(shù)與數(shù)據(jù)封裝 includeusingnamespacestd classApplication public voidf voidg private intglobal voidApplication f global 5 voidApplication g cout global endl intmain ApplicationMyApp MyApp f MyApp g return0 數(shù)據(jù)與函數(shù) 27 靜態(tài)成員 靜態(tài)數(shù)據(jù)成員用關(guān)鍵字static聲明該類的所有對(duì)象維護(hù)該成員的同一個(gè)拷貝必須在類外定義和初始化 用 來(lái)指明所屬的類 靜態(tài)成員函數(shù)類外代碼可以使用類名和作用域操作符來(lái)調(diào)用靜態(tài)成員函數(shù) 靜態(tài)成員函數(shù)只能引用屬于該類的靜態(tài)數(shù)據(jù)成員或靜態(tài)成員函數(shù) 靜態(tài)成員 28 例5 4具有靜態(tài)數(shù)據(jù)成員的Point類 includeusingnamespacestd classPoint public Point intx 0 inty 0 x x y y count Point Point 靜態(tài)成員 Point Point Point 28 30 靜態(tài)成員函數(shù)舉例 includeusingnamespacestd classApplication public staticvoidf staticvoidg private staticintglobal intApplication global 0 voidApplication f global 5 voidApplication g cout global endl intmain Application f Application g return0 靜態(tài)成員 31 靜態(tài)成員函數(shù)舉例 classA public staticvoidf Aa private intx voidA f Aa cout x 對(duì)x的引用是錯(cuò)誤的cout a x 正確 靜態(tài)成員 32 具有靜態(tài)數(shù)據(jù) 函數(shù)成員的Point類 includeusingnamespacestd classPoint Point類定義public 外部接口Point intx 0 inty 0 x x y y count Point Point 靜態(tài)成員 Point Point Point 32 34 友元 友元是C 提供的一種破壞數(shù)據(jù)封裝和數(shù)據(jù)隱藏的機(jī)制 通過(guò)將一個(gè)模塊聲明為另一個(gè)模塊的友元 一個(gè)模塊能夠引用到另一個(gè)模塊中本是被隱藏的信息 可以使用友元函數(shù)和友元類 為了確保數(shù)據(jù)的完整性 及數(shù)據(jù)封裝與隱藏的原則 建議盡量不使用或少使用友元 友元 35 友元函數(shù) 友元函數(shù)是在類聲明中由關(guān)鍵字friend修飾說(shuō)明的非成員函數(shù) 在它的函數(shù)體中能夠通過(guò)對(duì)象名訪問(wèn)private和protected成員作用 增加靈活性 使程序員可以在封裝和快速性方面做合理選擇 訪問(wèn)對(duì)象中的成員必須通過(guò)對(duì)象名 友元 36 例5 6使用友元函數(shù)計(jì)算兩點(diǎn)距離 include includeclassPoint Point類聲明public 外部接口Point intx 0 inty 0 x x y y intgetX returnx intgetY returny friendfloatdist Point 友元 floatdist Point 36 38 友元類 若一個(gè)類為另一個(gè)類的友元 則此類的所有成員都能訪問(wèn)對(duì)方類的私有成員 聲明語(yǔ)法 將友元類名在另一個(gè)類中使用friend修飾說(shuō)明 友元 39 友元類舉例 classA friendclassB public voiddisplay cout x endl private intx classB public voidset inti voiddisplay private Aa 友元 voidB set inti a x i voidB display a display 39 41 友元關(guān)系是單向的 如果聲明B類是A類的友元 B類的成員函數(shù)就可以訪問(wèn)A類的私有和保護(hù)數(shù)據(jù) 但A類的成員函數(shù)卻不能訪問(wèn)B類的私有 保護(hù)數(shù)據(jù) 42 常類型 常類型的對(duì)象必須進(jìn)行初始化 而且不能被更新 常對(duì)象 必須進(jìn)行初始化 不能被更新 const類名對(duì)象名常引用 被引用的對(duì)象不能被更新 const類型說(shuō)明符 引用名常數(shù)組 數(shù)組元素不能被更新 下一章介紹 類型說(shuō)明符const數(shù)組名 大小 常指針 指向常量的指針 下一章介紹 共享數(shù)據(jù)的保護(hù) 43 常對(duì)象舉例 classA public A inti intj x i y j private intx y Aconsta 3 4 a是常對(duì)象 不能被更新 共享數(shù)據(jù)的保護(hù) 44 用const修飾的對(duì)象成員 常成員函數(shù)使用const關(guān)鍵字說(shuō)明的函數(shù) 常成員函數(shù)不更新對(duì)象的數(shù)據(jù)成員 常成員函數(shù)說(shuō)明格式 類型說(shuō)明符函數(shù)名 參數(shù)表 const 這里 const是函數(shù)類型的一個(gè)組成部分 因此在實(shí)現(xiàn)部分也要帶const關(guān)鍵字 const關(guān)鍵字可以被用于參與對(duì)重載函數(shù)的區(qū)分通過(guò)常對(duì)象只能調(diào)用它的常成員函數(shù) 常數(shù)據(jù)成員使用const說(shuō)明的數(shù)據(jù)成員 共享數(shù)據(jù)的保護(hù) 45 例5 7常成員函數(shù)舉例 includeusingnamespacestd classR public R intr1 intr2 r1 r1 r2 r2 voidprint voidprint const private intr1 r2 共享數(shù)據(jù)的保護(hù) voidR print cout r1 r2 endl voidR print const cout r1 r2 endl intmain Ra 5 4 a print 調(diào)用voidprint constRb 20 52 b print 調(diào)用voidprint constreturn0 45 47 例5 8常數(shù)據(jù)成員舉例 includeusingnamespacestd classA public A inti voidprint private constinta staticconstintb 靜態(tài)常數(shù)據(jù)成員 共享數(shù)據(jù)的保護(hù) constintA b 10 A A inti a i voidA print cout a b endl intmain 建立對(duì)象a和b 并以100和0作為初值 分別調(diào)用構(gòu)造函數(shù) 通過(guò)構(gòu)造函數(shù)的初始化列表給對(duì)象的常數(shù)據(jù)成員賦初值 Aa1 100 a2 0 a1 print a2 print return0 47 49 例5 9常引用作形參 include includeusingnamespacestd classPoint Point類定義public 外部接口Point intx 0 inty 0 x x y y intgetX returnx intgetY returny friendfloatdist constPoint 共享數(shù)據(jù)的保護(hù) 例5 9常引用作形參 floatdist constPoint 50 共享數(shù)據(jù)的保護(hù) 51 編譯預(yù)處理命令 include包含指令將一個(gè)源文件嵌入到當(dāng)前源文件中該點(diǎn)處 include按標(biāo)準(zhǔn)方式搜索 文件位于C 系統(tǒng)目錄的include子目錄下 include 文件名 首先在當(dāng)前目錄中搜索 若沒(méi)有 再按標(biāo)準(zhǔn)方式搜索 define宏定義指令定義符號(hào)常量 很多情況下已被const定義語(yǔ)句取代 定義帶參數(shù)宏 已被內(nèi)聯(lián)函數(shù)取代 undef刪除由 define定義的宏 使之不再起作用 52 條件編譯指令 if和 endif if常量表達(dá)式 當(dāng) 常量表達(dá)式 非零時(shí)編譯程序正文 endif 編譯預(yù)處理命令 53 條件編譯指令 else if常量表達(dá)式 當(dāng) 常量表達(dá)式 非零時(shí)編譯程序正文1 else 當(dāng) 常量表達(dá)式 為零時(shí)編譯程序正文2 endif 編譯預(yù)處理命令 54 條件編譯指令 elif if常量表達(dá)式1程序正文1 當(dāng) 常量表達(dá)式1 非零時(shí)編譯 elif常量表達(dá)式2程序正文2 當(dāng) 常量表達(dá)式2 非零時(shí)編譯 else程序正文3 其他情況下編譯 endif 編譯預(yù)處理命令 55 條件編譯指令 ifdef標(biāo)識(shí)符程序段1 else程序段2 endif如果 標(biāo)識(shí)符 經(jīng) defined定義過(guò) 且未經(jīng)undef刪除 則編譯程序段1 否則編譯程序段2 編譯預(yù)處理命令 56 條件編譯指令 ifndef標(biāo)識(shí)符程序段1 else程序段2 endif如果 標(biāo)識(shí)符 未被定義過(guò) 則編譯程序段1 否則編譯程序段2 編譯預(yù)處理命令 57 多文件結(jié)構(gòu) 例5 10 一個(gè)源程序可以劃分為多個(gè)源文件 類聲明文件 h文件 類實(shí)現(xiàn)文件 cpp文件 類的使用文件 main 所在的 cpp文件 利用工程來(lái)組合各個(gè)文件 58 不使用條件編譯的頭文件 main cpp include file1 h include file2 h intmain file1 h include head h file2 h include head h head h classPoint 多文件結(jié)構(gòu) 59 使用條件編譯的頭文件 head h ifndefHEAD H defineHEAD H classPoint endif 多文件結(jié)構(gòu) 常成員函數(shù)的聲明原則 適當(dāng)?shù)貙⒊蓡T函數(shù)聲明為常成員函數(shù) 能夠提高代碼質(zhì)量 凡是不會(huì)改變對(duì)象狀態(tài)的函數(shù) 都應(yīng)當(dāng)聲明為常成員函數(shù) 什么是改變對(duì)象狀態(tài) 改變對(duì)象狀態(tài) 不簡(jiǎn)單地等同于改變成員數(shù)據(jù)的值 只要一個(gè)成員函數(shù)執(zhí)行與否 不會(huì)影響以后接口函數(shù)的調(diào)用結(jié)果 都可以認(rèn)為它不會(huì)改變對(duì)象狀態(tài) 60 深度探索 常成員函數(shù)的聲明原則 classLine Line類的定義public 外部接口Line constPoint 61 深度探索 改變數(shù)據(jù)成員 但不改變對(duì)象狀態(tài) 常成員函數(shù)的聲明原則 在原則上 應(yīng)當(dāng)將getLen聲明為常成員函數(shù) 但由于修改了數(shù)據(jù)成員的值 語(yǔ)言規(guī)則不允許怎么辦 使用mutable關(guān)鍵字mutable關(guān)鍵字使得被修飾的成員對(duì)象無(wú)視 常對(duì)象的成員對(duì)象被視為常對(duì)象 這一語(yǔ)言原則Mutable須慎用 62 深度探索 修改后的程序代碼 63 深度探索 classLine Line類的定義public 外部接口Line constPoint 代碼的編譯 編譯 源文件 目標(biāo)文件源文件的函數(shù)代碼 目標(biāo)文件的代碼段源文件的靜態(tài)對(duì)象 目標(biāo)文件的數(shù)據(jù)段分為初始化的數(shù)據(jù)段和未初始化的數(shù)據(jù)段符號(hào)表 將靜態(tài)對(duì)象與函數(shù)的名字與地址關(guān)聯(lián)重定位信息 其它信息 64 深度探索 示例代碼 1 a cppexterninty intfunc intv intmain intz 1 y func z return0 65 深度探索 示例代碼 2 66 func的代碼 push ebpmov esp ebp 代碼段 text x的初值 3 初始化的數(shù)據(jù)段 data y 未初始化的數(shù)據(jù)段 bss 符號(hào)表 b o b cppintx 3 inty intfunc intv returnv x 深度探索 代碼的連接與執(zhí)行 連接將各段合并將符號(hào)表綜合根據(jù)重定位信息 確定代碼中用到的全局地址代碼的執(zhí)行操作系統(tǒng)首先將文件從磁盤讀入 初始化各段 一些靜態(tài)數(shù)據(jù)就在此時(shí)被初始化從引導(dǎo)代碼開(kāi)始執(zhí)行 引導(dǎo)代碼啟動(dòng)main main返回后 引導(dǎo)代碼通知操作系統(tǒng)程序結(jié)束 67 深度探索 68 小結(jié)與復(fù)習(xí)建議 主要內(nèi)容作用域與可見(jiàn)性 對(duì)象的生存期 數(shù)據(jù)的共享與保護(hù) 友元 編譯預(yù)處理命令 多文件結(jié)構(gòu)和工程達(dá)到的目標(biāo)深入理解程序的結(jié)構(gòu) 模塊間的關(guān)系 數(shù)據(jù)共享 實(shí)驗(yàn)任務(wù)實(shí)驗(yàn)五

注意事項(xiàng)

本文(C清華大學(xué)出版社第四版課件第五章.ppt)為本站會(huì)員(max****ui)主動(dòng)上傳,裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請(qǐng)重新下載,重復(fù)下載不扣分。




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

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

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


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