5.3 對象的創(chuàng)建_第1頁
5.3 對象的創(chuàng)建_第2頁
5.3 對象的創(chuàng)建_第3頁
5.3 對象的創(chuàng)建_第4頁
5.3 對象的創(chuàng)建_第5頁
已閱讀5頁,還剩6頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、5.3對象的創(chuàng)建 1.實(shí)體、類、對象、實(shí)例 實(shí)體:客觀世界與思維世界中存在的事物。 類:具有相同的構(gòu)成形式的所有實(shí)體的構(gòu)成形式的描述。 (它只描述它們包含有哪些數(shù)據(jù),提供些什么操作,但仍未具體分配存儲空間,也尚未實(shí)際存在) 對象:類的實(shí)例,具有類定義那樣構(gòu)成形式的客觀存在的實(shí)體 。(簡稱:類類型的變量) 具有類類型的變量稱為對象。(object) 實(shí)例:在程序運(yùn)行時(shí),通過為對象分配存儲空間來創(chuàng)建對象。創(chuàng)建對象時(shí),類被用作樣板,對象為類的實(shí)例。(instance) 12.對象創(chuàng)建的例子例1設(shè)已定義了循環(huán)計(jì)數(shù)器類:class CIRCULAR_NUMBERSpublic: void set_mod

2、e(int min,int max); /設(shè)置循環(huán)計(jì)數(shù)器的上、下限 void set_value(int value); /設(shè)置循環(huán)計(jì)數(shù)器的當(dāng)前值 int get_value(); /查詢循環(huán)計(jì)數(shù)器的當(dāng)前值 void increment(); /循環(huán)計(jì)數(shù)器加1 void decrement(); /循環(huán)計(jì)數(shù)器減1private: int min_val; /最小值 int max_val; /最大值 int current; /當(dāng)前值;2定義了類之后,我們就可以用它來創(chuàng)建相關(guān)的對象:/創(chuàng)建角度循環(huán)計(jì)數(shù)器angleCIRCULAR_NUMBERS angle;/創(chuàng)建月份循環(huán)計(jì)數(shù)器monthCIR

3、CULAR_NUMBERS month;3例2創(chuàng)建時(shí)鐘類對象的例子設(shè)已定義了時(shí)鐘類:/功能:實(shí)現(xiàn)一個簡單的時(shí)鐘類class CLOCKpublic:CLOCK (int hh, int mm, int ss);/設(shè)置時(shí)間的當(dāng)前值void update( );/刷新時(shí)間void show( );/顯示時(shí)間private:CIRCULAR_NUMBERS hour;/時(shí)CIRCULAR_NUMBERS minute;/分CIRCULAR_NUMBERS second;/秒;我們就可以利用它來創(chuàng)建時(shí)鐘對象(并初始化):CLOCK rolex(4, 15, 30);CLOCK cima(14, 0,

4、0);43.同一類不同對象的存儲組織 1)類定義中的靜態(tài)成員各自分配存儲空間; 2)類定義中的非靜態(tài)成員: 數(shù)據(jù)成員-各自分配存儲空間。 成員函數(shù)-共享同一代碼副本,共享存儲空間。 原因:數(shù)據(jù)成員:描述對象的狀態(tài),不同對象可能具有不同的狀態(tài) 。(如人的身高,不同人身高可能就不一樣) 成員函數(shù):作為類對外界提供服務(wù)的界面,是對象行為的描述,同一類的對象的行為應(yīng)該是一致的。 5 3)要解決的問題(針對函數(shù)成員共享存儲空間) 不同對象調(diào)用一個成員函數(shù):不同對象分配存儲空間時(shí)在本來分配成員函數(shù)的位置上安排一個轉(zhuǎn)向指針,使它指向?qū)?yīng)的成員函數(shù)。 不同對象調(diào)用同一成員函數(shù),如何保證成員函數(shù)不會錯誤地訪問另

5、一對象? C+通過為成員函數(shù)設(shè)置this指針來解決。 this指針C+編譯對類的成員函數(shù)進(jìn)行編譯時(shí),自動為每一個成員函數(shù)設(shè)置一個this指針。該指針的功能是:當(dāng)一個對象調(diào)用一個成員函數(shù)時(shí),這個成員函數(shù)的this指針就指向調(diào)用這一個成員函數(shù)的對象。如下頁圖所示,當(dāng)對象 month調(diào)用成員函數(shù)set_mode( )時(shí),成員函數(shù)set_mode( )的this指針就指向?qū)ο髆onth。64)例子: 74.對象成員的引用 基本上采用2種方式(必須表明:是哪一個對象,是該對象中的哪個成員) : 1)對象名.成員名 如:angle.increment( ); 2)指向?qū)ο蟮闹羔?成員名 如前例:已知cla

6、ss Myclass 創(chuàng)建了對象和指向?qū)ο蟮闹羔槪篗yclass obj1,obj2,*p; /p是指向類Myclass的指針 令p指向obj1:p=&obj1; 則:obj1.x與p-x等價(jià);obj1.getx( )與p-getx( )等價(jià) /因p指向obj1 85.對象的生存期 對象的生存期概念與變量生存期概念一樣,由對象聲明決定。其中各個數(shù)據(jù)成員的生存期由對象生存期決定,對象存在時(shí)它就存在,對象被撤消時(shí)它就被撤消。9不同存儲類型的對象生存期也不同,按生存期的不同對象可分為如下三種:1.局部對象:當(dāng)對象被定義時(shí),該對象被創(chuàng)建,當(dāng)程序退出定義該對象所在的函數(shù)體或程序塊時(shí),釋放該對象。2.靜態(tài)對象:當(dāng)程序第一次執(zhí)行所定義的靜態(tài)對象時(shí),該對象被創(chuàng)建,當(dāng)程序結(jié)束時(shí),該對象被釋放。3.全局對象:當(dāng)程序開始時(shí),創(chuàng)建該對象,當(dāng)程序時(shí)釋放該對象。局部對象是被主義在一個函數(shù)體或程序塊內(nèi)的,它的作用域小,生存期也短。靜態(tài)對象是被定義在一個文件中,它的作用

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論