C語(yǔ)言程序設(shè)計(jì)4_第1頁(yè)
C語(yǔ)言程序設(shè)計(jì)4_第2頁(yè)
C語(yǔ)言程序設(shè)計(jì)4_第3頁(yè)
C語(yǔ)言程序設(shè)計(jì)4_第4頁(yè)
C語(yǔ)言程序設(shè)計(jì)4_第5頁(yè)
已閱讀5頁(yè),還剩41頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

會(huì)計(jì)學(xué)1C語(yǔ)言程序設(shè)計(jì)4標(biāo)識(shí)符的作用域與可見(jiàn)性(1/4)什么是標(biāo)識(shí)符?某內(nèi)存空間的代號(hào)什么是標(biāo)識(shí)符的作用域?標(biāo)識(shí)符的有效范圍什么是標(biāo)識(shí)符的可見(jiàn)性?如果在當(dāng)前位置能使用指定的標(biāo)識(shí)符,則該標(biāo)識(shí)符可見(jiàn)第2頁(yè)/共46頁(yè)第1頁(yè)/共46頁(yè)標(biāo)識(shí)符的作用域與可見(jiàn)性(2/4)標(biāo)識(shí)符有哪些作用域?函數(shù)原形作用域函數(shù)聲明中的形參的作用域塊作用域從聲明標(biāo)識(shí)符的語(yǔ)句起到包含該聲明的}之間通常稱(chēng)具有塊作用域的變量為局部變量第3頁(yè)/共46頁(yè)第2頁(yè)/共46頁(yè)標(biāo)識(shí)符的作用域與可見(jiàn)性(3/4)類(lèi)作用域類(lèi)的成員在類(lèi)內(nèi)的作用域類(lèi)內(nèi)是類(lèi)聲明的{}和所有類(lèi)的函數(shù)的定義部分文件作用域在文件中聲明,但沒(méi)被任何一對(duì){}包括的標(biāo)識(shí)符的作用域通常稱(chēng)之為全局變量第4頁(yè)/共46頁(yè)第3頁(yè)/共46頁(yè)標(biāo)識(shí)符的作用域與可見(jiàn)性(4/4)標(biāo)識(shí)符的可見(jiàn)性有哪些規(guī)則?標(biāo)識(shí)符要先聲明,后使用同一作用域內(nèi),標(biāo)識(shí)符不能重名不同作用域內(nèi),標(biāo)識(shí)符可以重名特例:如果A作用域包含B作用域,B內(nèi)的標(biāo)識(shí)符會(huì)掩蔽掉A中的同名標(biāo)識(shí)符,使其不可見(jiàn)第5頁(yè)/共46頁(yè)第4頁(yè)/共46頁(yè)思考閱讀下述代碼,說(shuō)明其中標(biāo)識(shí)符的作用域Eye::Eye(boolleftIsSmall,boolleftIsSingle):left(leftIsSmall,leftIsSingle){

Eyeleft(leftIsSmall,leftIsSingle);}第6頁(yè)/共46頁(yè)第5頁(yè)/共46頁(yè)看例子思考本例中變量的作用域?可見(jiàn)性?哪些量是全局變量?如何訪問(wèn)被掩蔽的全局變量?如果將Point::Point(inta,intb)改為Point::Point(intx,inty)會(huì)怎樣?此時(shí)如何訪問(wèn)被掩蔽的類(lèi)的屬性?全局變量在其他文件中能使用嗎?第7頁(yè)/共46頁(yè)第6頁(yè)/共46頁(yè)注意一定要注意變量間的掩蔽效應(yīng)破除掩蔽效應(yīng)的方法是“稱(chēng)呼變量的全名”如:類(lèi)名::變量名對(duì)于全局變量為:::變量名注意關(guān)鍵字extern的使用第8頁(yè)/共46頁(yè)第7頁(yè)/共46頁(yè)對(duì)象的生存期(1/3)變量和對(duì)象有關(guān)系嗎?什么關(guān)系?變量就是對(duì)象!默認(rèn)情況下:變量和對(duì)象指內(nèi)存中的一段連續(xù)空間變量名和對(duì)象名則是該段內(nèi)存空間的起始地址的代號(hào)第9頁(yè)/共46頁(yè)第8頁(yè)/共46頁(yè)對(duì)象的生存期(2/3)對(duì)象的動(dòng)態(tài)生存期:對(duì)象在被聲明時(shí)創(chuàng)建,在它的對(duì)象名的作用域結(jié)束時(shí)銷(xiāo)毀具有動(dòng)態(tài)生存期的對(duì)象都儲(chǔ)存在“?!敝械?0頁(yè)/共46頁(yè)第9頁(yè)/共46頁(yè)對(duì)象的生存期(3/3)對(duì)象的靜態(tài)生存期:對(duì)象的生存期與程序的運(yùn)行期相同全局變量具有靜態(tài)生存期局部變量如果希望具有靜態(tài)生存期,則必須在聲明時(shí)用static關(guān)鍵字說(shuō)明通常這些對(duì)象被放在“堆”中第11頁(yè)/共46頁(yè)第10頁(yè)/共46頁(yè)看例子思考本例中k的生存期?本例中k的可見(jiàn)性?第12頁(yè)/共46頁(yè)第11頁(yè)/共46頁(yè)思考局部變量具有靜態(tài)生存期有什么好處?第13頁(yè)/共46頁(yè)第12頁(yè)/共46頁(yè)注意如果你沒(méi)有對(duì)具有靜態(tài)生存期的變量做初始化,則編譯器會(huì)將它初始化為0使用具有靜態(tài)生存期的變量應(yīng)謹(jǐn)慎因?yàn)殡m然這樣做會(huì)使變量的使用更加方便,但卻會(huì)破壞安全性第14頁(yè)/共46頁(yè)第13頁(yè)/共46頁(yè)類(lèi)的靜態(tài)成員(1/6)類(lèi)的封裝機(jī)制使對(duì)象的數(shù)據(jù)成員在類(lèi)內(nèi)能共享訪問(wèn),但在類(lèi)外嚴(yán)格限制對(duì)對(duì)象的數(shù)據(jù)成員的訪問(wèn)什么是類(lèi)內(nèi)?什么是類(lèi)外?第15頁(yè)/共46頁(yè)第14頁(yè)/共46頁(yè)類(lèi)的靜態(tài)成員(2/6)類(lèi)的數(shù)據(jù)成員是什么意思?類(lèi)的函數(shù)成員是什么意思?類(lèi)的屬性是什么意思?通常情況下:類(lèi)的屬性指類(lèi)的所有對(duì)象共同具有的屬性第16頁(yè)/共46頁(yè)第15頁(yè)/共46頁(yè)思考飯卡類(lèi)中:所有飯卡共用一個(gè)賬戶,還是每個(gè)飯卡均有自己的賬戶?在類(lèi)中:每個(gè)對(duì)象共用一個(gè)屬性,還是每個(gè)對(duì)象都有自己的屬性?同一類(lèi)的對(duì)象間,可不可以擁有共同的屬性?可不可以有屬于類(lèi),但不屬于任何對(duì)象的屬性?第17頁(yè)/共46頁(yè)第16頁(yè)/共46頁(yè)類(lèi)的靜態(tài)成員(3/6)類(lèi)內(nèi)可以有靜態(tài)成員靜態(tài)數(shù)據(jù)成員靜態(tài)函數(shù)成員什么樣的成員應(yīng)寫(xiě)成靜態(tài)數(shù)據(jù)成員?如果類(lèi)有某屬性,該屬性獨(dú)立于該類(lèi)的任何一個(gè)對(duì)象(即:要么被所有對(duì)象共用,要么與任何對(duì)象無(wú)關(guān)),則該屬性應(yīng)被聲明為靜態(tài)數(shù)據(jù)成員第18頁(yè)/共46頁(yè)第17頁(yè)/共46頁(yè)類(lèi)的靜態(tài)成員(4/6)靜態(tài)數(shù)據(jù)成員的應(yīng)用場(chǎng)合:用來(lái)保存流動(dòng)變化的對(duì)象個(gè)數(shù)用做一個(gè)標(biāo)志如果類(lèi)的對(duì)象的數(shù)據(jù)結(jié)構(gòu)是鏈表,則通常指向第一個(gè)成員或最后一個(gè)成員的指針用靜態(tài)數(shù)據(jù)成員表示靜態(tài)數(shù)據(jù)成員不依附于任何一個(gè)對(duì)象而存在第19頁(yè)/共46頁(yè)第18頁(yè)/共46頁(yè)類(lèi)的靜態(tài)成員(5/6)靜態(tài)數(shù)據(jù)成員的聲明:用static關(guān)鍵字指明靜態(tài)數(shù)據(jù)成員的初始化:在該類(lèi)的所有成員函數(shù)的實(shí)現(xiàn)前實(shí)現(xiàn)靜態(tài)數(shù)據(jù)成員的使用:與動(dòng)態(tài)數(shù)據(jù)成員的使用方式一樣第20頁(yè)/共46頁(yè)第19頁(yè)/共46頁(yè)變形金剛類(lèi)例:Transformer引入:靜態(tài)數(shù)據(jù)成員:number第21頁(yè)/共46頁(yè)第20頁(yè)/共46頁(yè)思考本例中用什么方式聲明的類(lèi)內(nèi)靜態(tài)數(shù)據(jù)成員?怎么初始化的該成員?怎么使用的該成員?如果讓計(jì)數(shù)器number正確工作需要修改哪些函數(shù)?第22頁(yè)/共46頁(yè)第21頁(yè)/共46頁(yè)類(lèi)的靜態(tài)成員(6/6)靜態(tài)函數(shù)成員的應(yīng)用場(chǎng)合:獨(dú)立于任何對(duì)象的函數(shù)專(zhuān)門(mén)用來(lái)訪問(wèn)靜態(tài)數(shù)據(jù)成員的函數(shù)靜態(tài)函數(shù)成員不依附于任何一個(gè)對(duì)象而存在因此:靜態(tài)函數(shù)成員可以直接訪問(wèn)的只有該類(lèi)的靜態(tài)成員如果要訪問(wèn)非靜態(tài)成員,必須要用對(duì)象做媒介第23頁(yè)/共46頁(yè)第22頁(yè)/共46頁(yè)變形金剛類(lèi)例:Transformer引入:靜態(tài)函數(shù)成員:voidFortify()靜態(tài)函數(shù)成員:voidResetNumber()靜態(tài)函數(shù)成員:voidCharge(……)第24頁(yè)/共46頁(yè)第23頁(yè)/共46頁(yè)思考本例中用幾種方式使用類(lèi)內(nèi)的靜態(tài)函數(shù)成員?Transformer::Fortify();在邏輯上應(yīng)該如何解釋?zhuān)縫rime.Fortify();又應(yīng)該怎么解釋?zhuān)康?5頁(yè)/共46頁(yè)第24頁(yè)/共46頁(yè)思考閱讀下述代碼,找出錯(cuò)誤并解釋原因classA{ private: inti=1;};第26頁(yè)/共46頁(yè)第25頁(yè)/共46頁(yè)思考閱讀下述代碼,找出錯(cuò)誤并解釋原因classA{ private: staticinti=1;};第27頁(yè)/共46頁(yè)第26頁(yè)/共46頁(yè)思考閱讀下述代碼,找出錯(cuò)誤并解釋原因classA{ private: staticinti;};A::i=1;第28頁(yè)/共46頁(yè)第27頁(yè)/共46頁(yè)思考閱讀下述代碼,找出錯(cuò)誤并解釋原因classA{ private: inti; public: staticvoidTest();};voidA::Test(){i=100;}第29頁(yè)/共46頁(yè)第28頁(yè)/共46頁(yè)總結(jié)類(lèi)中所有動(dòng)態(tài)數(shù)據(jù)成員,只能通過(guò)構(gòu)造的方式創(chuàng)建,它們依附于對(duì)象類(lèi)中的所有靜態(tài)數(shù)據(jù)成員,在類(lèi)存在的那一刻起就被創(chuàng)建了,它們獨(dú)立于對(duì)象類(lèi)中所有動(dòng)態(tài)數(shù)據(jù)成員,只能通過(guò)非靜態(tài)函數(shù)成員訪問(wèn)和修改類(lèi)中所有靜態(tài)數(shù)據(jù)成員,在類(lèi)內(nèi)可以被任意修改第30頁(yè)/共46頁(yè)第29頁(yè)/共46頁(yè)類(lèi)的友元(1/2)什么是友元?友元就是類(lèi)的好友因此:類(lèi)內(nèi)所有信息對(duì)友元是可見(jiàn)的為什么被封裝的類(lèi)還要使用友元?為了提高訪問(wèn)對(duì)象的效率,節(jié)省訪問(wèn)對(duì)象的時(shí)間第31頁(yè)/共46頁(yè)第30頁(yè)/共46頁(yè)類(lèi)的友元(2/2)有哪些友元?友元函數(shù)友元類(lèi)怎么指明友元?用friend關(guān)鍵字指明必須要在類(lèi)內(nèi)聲明友元classWallet{ double balance;public: voidIncrease(doublemoney); voidDecrease(doublemoney); voidSetBalance(doublemoney); doubleGetBalance(); friendvoidFriendGate(WallettheFriend, doublemoney); friendclassGirlFriend;};第32頁(yè)/共46頁(yè)第31頁(yè)/共46頁(yè)注意友元函數(shù)可以是普通函數(shù)友元函數(shù)也可以是其他類(lèi)的成員函數(shù)友元可以直接訪問(wèn)和修改類(lèi)或?qū)ο蟮某蓡T如果A類(lèi)為B類(lèi)的友元類(lèi),則A類(lèi)的所有成員函數(shù)都是B類(lèi)的友元函數(shù)見(jiàn)書(shū)136~139頁(yè)第33頁(yè)/共46頁(yè)第32頁(yè)/共46頁(yè)注意友元關(guān)系不能傳遞友元關(guān)系是單向的友元關(guān)系不能被繼承第34頁(yè)/共46頁(yè)第33頁(yè)/共46頁(yè)常量(1/6)字面值常量與“不能變的變量”怎么能指明某個(gè)變量為常量?用const關(guān)鍵字指明例:constdoublei=100.0;conststringname="zhangsan";也可以:doubleconsti(100.0);第35頁(yè)/共46頁(yè)第34頁(yè)/共46頁(yè)常量(2/6)constdoublepi=3.1416與#definePI3.1416的區(qū)別?pi在程序運(yùn)行期間有自己專(zhuān)門(mén)的空間,空間內(nèi)存儲(chǔ)3.1416程序中的PI會(huì)在編譯后被替換成3.1416第36頁(yè)/共46頁(yè)第35頁(yè)/共46頁(yè)常量(3/6)常引用語(yǔ)法:const類(lèi)型&變量名例:constdouble&r=a;作用:r在其作用域內(nèi)不能被修改常引用多用于函數(shù)的參數(shù)傳遞,即:既希望用引用來(lái)提高效率,又不希望修改原有的值時(shí)。constdouble&r=a;作用:r在其作用域內(nèi)不能被修改但a能不能被修改?第37頁(yè)/共46頁(yè)第36頁(yè)/共46頁(yè)思考閱讀下述代碼,找出錯(cuò)誤并解釋原因inttest(int&val){returnval++;}voidmain(){ shortv1=0; constintv2=100; intv3=test(v1); v3=test(v2); v3=test(100); v3=test(v1+v2);}第38頁(yè)/共46頁(yè)第37頁(yè)/共46頁(yè)注意引用要求“一模一樣”!但常引用限制沒(méi)有這么多!好的編程習(xí)慣:設(shè)計(jì)形參時(shí),將所有不希望在函數(shù)體內(nèi)改變其值的參數(shù)設(shè)計(jì)為——常引用第39頁(yè)/共46頁(yè)第38頁(yè)/共46頁(yè)常量(4/6)常對(duì)象語(yǔ)法:類(lèi)型const變量名例:Pointconstorigin(0,0);作用:origin在它的生存期內(nèi)不能被改變常對(duì)象必須進(jìn)行初始化,而且不能被更新第40頁(yè)/共46頁(yè)第39頁(yè)/共46頁(yè)思考如何修改對(duì)象的屬性值?對(duì)常對(duì)象而言,這些修改方式有作用嗎?第41頁(yè)/共46頁(yè)第40頁(yè)/共46頁(yè)注意為了防止通過(guò)行為修改常對(duì)象的值,C++規(guī)定常對(duì)象不能調(diào)用任何普通成員函數(shù)!可是,不能調(diào)用行為的對(duì)象有什么用?第42頁(yè)/共46頁(yè)第41頁(yè)/共46頁(yè)常量(5/6)常成員函數(shù)語(yǔ)法:類(lèi)型函數(shù)名(形參表)const例:voidShow(inttest)const;作用:該函數(shù)專(zhuān)供常對(duì)象使用第43頁(yè)/共46頁(yè)第42頁(yè)/共46頁(yè)注意const在函數(shù)定義和聲明中都不能省略!常成員函數(shù)不能更新對(duì)象的數(shù)據(jù)成員,也不能調(diào)用該類(lèi)中沒(méi)有用const修飾的成員函數(shù)!常對(duì)象只能調(diào)用常成員函數(shù),不能調(diào)用其它成員函數(shù)const

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論