2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩4頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、從struct結(jié)構(gòu)到類class深入理解深入理解struct在C語言中,我們通常使用struct來表示不同數(shù)據(jù)類型的結(jié)合。當(dāng)然我們也可以在struct中定義函數(shù),在C中,這是允許的但是不提倡使用,因?yàn)橛幸粋€(gè)比它更好使用的復(fù)雜數(shù)據(jù)類型,叫做類(這在稍后做出介紹)。使用struct的時(shí)候有一個(gè)問題:在進(jìn)行一個(gè)比較大的項(xiàng)目工程的時(shí)候,我們的數(shù)據(jù)結(jié)構(gòu)的定義和使用可能在不同的文件中,當(dāng)我們修改了數(shù)據(jù)結(jié)構(gòu)中的某個(gè)成員,那么,使用該數(shù)據(jù)結(jié)構(gòu)的函數(shù)必須

2、修改,而我們并不知道拿下函數(shù)使用該種數(shù)據(jù)結(jié)構(gòu),這時(shí)候我們怎么做?答案很簡單,在函數(shù)定義的時(shí)候,讓該函數(shù)屬于該數(shù)據(jù)結(jié)構(gòu),在再次查找修改函數(shù)的時(shí)候,只要屬于該結(jié)構(gòu)的函數(shù)就進(jìn)行修改就好了,代碼如下:123456789101112131415聲明數(shù)據(jù)結(jié)構(gòu):structTimeinthourintminuteintsecondvoidset_time(inthintmints)voidtick()voidshow()voidrun()定義函數(shù):v

3、oidTime::set_time(inthintmints)voidTime::tick()voidTime::show()voidTime::run()補(bǔ)充:成員運(yùn)算符:表示某個(gè)變量的成員,‘.’;表示某個(gè)類型的成員,“::”;類的引出類的引出這樣定義就萬事大吉了嗎?我們?nèi)绻谄渌瘮?shù)中試圖訪問該結(jié)構(gòu)中的成員變量(如:hour、minute、second)是成功的,這樣我們就有可能無意中修改了數(shù)據(jù)結(jié)構(gòu)中的某個(gè)成員變量的值,當(dāng)其他函數(shù)

4、在使用成員變量的時(shí)候,就會(huì)使用該可能非法的數(shù)據(jù),這樣我們就會(huì)想到只要讓這些成員變量變成私有的就好了,這樣除了結(jié)構(gòu)中定義的函數(shù)外,其他方式都不可以訪問到該成員,這就出現(xiàn)了中我們C常使用的一種數(shù)據(jù)結(jié)構(gòu)——類。我們進(jìn)行如下修改。123456789聲明數(shù)據(jù)結(jié)構(gòu):classTimeinthourintminuteintsecondvoidset_time(inthintmints)voidtick()voidshow()voidrun()對于cl

5、ass中的成員函數(shù),我們可以自己寫一個(gè)函數(shù)進(jìn)行初始化,比如set函數(shù),將每個(gè)成員變量進(jìn)行初始化賦值。但是每次創(chuàng)建一個(gè)新類都要調(diào)用該種函數(shù)進(jìn)行成員的初始化,這大大加大了我們創(chuàng)建使用類的代價(jià),為了讓我們每次創(chuàng)建一個(gè)對象的時(shí)候,都可以自動(dòng)調(diào)用某個(gè)函數(shù)進(jìn)行成員變量的初始化,我們可以使用類中重要的成員函數(shù)——構(gòu)造函數(shù)(構(gòu)造函數(shù)無返回值,并且函數(shù)名與類名一致),它可以在創(chuàng)建對象的時(shí)候自動(dòng)調(diào)用,根據(jù)創(chuàng)建對象時(shí)傳入的初始化參數(shù)進(jìn)行成員變量的初始化。構(gòu)造

6、函數(shù)的格式:Class_name(parameters)構(gòu)造函數(shù)的初始化有兩種方式:(1)通過在構(gòu)造函數(shù)內(nèi)部進(jìn)行賦值進(jìn)行初始化,常量不能被賦值,只能使用初始化列表。(2)通過初始化列表進(jìn)行初始化,如果成員變量是數(shù)組或結(jié)構(gòu)不能使用初始化列表進(jìn)行初始化。構(gòu)造函數(shù)的重載:有時(shí)候我們需要定義多個(gè)構(gòu)造函數(shù),因?yàn)槲覀兛赡芑诓煌男枨髮Τ蓡T變量的初始化操作不同,這就是構(gòu)造函數(shù)的重載(函數(shù)重載:函數(shù)名相同,但是函數(shù)參數(shù)不同。系統(tǒng)可以根據(jù)傳入?yún)?shù)的不同

7、來調(diào)用不同的函數(shù))。析構(gòu)函數(shù):存在構(gòu)造函數(shù)也就會(huì)存在析構(gòu)函數(shù),析構(gòu)函數(shù)就是在該對象即將被釋放的時(shí)候做收尾動(dòng)作,析構(gòu)函數(shù)一定沒有參數(shù)列表,所以析構(gòu)函數(shù)不可以重載。析構(gòu)函數(shù)規(guī)則:~Class_name();新申博123456789101112131415161718192021222324classAintndoubledpublic:A():n(0)d(0.0)construct_init1A(intn)construct_init2th

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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

提交評論