![第八章_運(yùn)算符重載及流類庫(2011-3-28)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/10/57ca8701-b4f3-4815-9ef3-52e36aa50b61/57ca8701-b4f3-4815-9ef3-52e36aa50b611.gif)
![第八章_運(yùn)算符重載及流類庫(2011-3-28)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/10/57ca8701-b4f3-4815-9ef3-52e36aa50b61/57ca8701-b4f3-4815-9ef3-52e36aa50b612.gif)
![第八章_運(yùn)算符重載及流類庫(2011-3-28)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/10/57ca8701-b4f3-4815-9ef3-52e36aa50b61/57ca8701-b4f3-4815-9ef3-52e36aa50b613.gif)
![第八章_運(yùn)算符重載及流類庫(2011-3-28)_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/10/57ca8701-b4f3-4815-9ef3-52e36aa50b61/57ca8701-b4f3-4815-9ef3-52e36aa50b614.gif)
![第八章_運(yùn)算符重載及流類庫(2011-3-28)_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/10/57ca8701-b4f3-4815-9ef3-52e36aa50b61/57ca8701-b4f3-4815-9ef3-52e36aa50b615.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、/361 第九章第九章 運(yùn)算符重載及流類庫運(yùn)算符重載及流類庫C+程序設(shè)計(jì)/362本章主要內(nèi)容本章主要內(nèi)容l運(yùn)算符重載運(yùn)算符重載l流類庫流類庫l文件流文件流/363運(yùn)算符重載運(yùn)算符重載C+語言允許程序員語言允許程序員重新定義已有的運(yùn)算符重新定義已有的運(yùn)算符,使其能按用戶的要求完成一些特定的操作,這使其能按用戶的要求完成一些特定的操作,這就是所謂的就是所謂的運(yùn)算符重載運(yùn)算符重載。運(yùn)算符重載與函數(shù)重載相似,其目的是設(shè)置某運(yùn)算符重載與函數(shù)重載相似,其目的是設(shè)置某一運(yùn)算符,讓它具有另一種功能,盡管此運(yùn)算一運(yùn)算符,讓它具有另一種功能,盡管此運(yùn)算符在原先符在原先C+語言中代表另一種含義,但他們語言中代表另一
2、種含義,但他們彼此之間并不沖突。彼此之間并不沖突。C+會(huì)根據(jù)運(yùn)算符的位置會(huì)根據(jù)運(yùn)算符的位置辨別應(yīng)使用哪一種功能進(jìn)行運(yùn)算。辨別應(yīng)使用哪一種功能進(jìn)行運(yùn)算。 /364運(yùn)算符重載運(yùn)算符重載C+內(nèi)部內(nèi)部任何運(yùn)算都是通過函數(shù)來實(shí)現(xiàn)任何運(yùn)算都是通過函數(shù)來實(shí)現(xiàn)的的。運(yùn)算符重載的實(shí)質(zhì)就是函數(shù)重載運(yùn)算符重載的實(shí)質(zhì)就是函數(shù)重載。在實(shí)現(xiàn)過程中,首先把指定的運(yùn)算表達(dá)在實(shí)現(xiàn)過程中,首先把指定的運(yùn)算表達(dá)式轉(zhuǎn)化為對運(yùn)算符函數(shù)的調(diào)用,運(yùn)算對式轉(zhuǎn)化為對運(yùn)算符函數(shù)的調(diào)用,運(yùn)算對象轉(zhuǎn)化為運(yùn)算符函數(shù)的實(shí)參,然后根據(jù)象轉(zhuǎn)化為運(yùn)算符函數(shù)的實(shí)參,然后根據(jù)實(shí)參的類型來確定需要調(diào)用的函數(shù),這實(shí)參的類型來確定需要調(diào)用的函數(shù),這個(gè)過程是在編譯過程中
3、完成的。個(gè)過程是在編譯過程中完成的。/365運(yùn)算符重載運(yùn)算符重載運(yùn)算符的重載形式有兩種:重載為類的運(yùn)算符的重載形式有兩種:重載為類的成員函數(shù)成員函數(shù)和重載為和重載為類的類的友元函數(shù)友元函數(shù)。運(yùn)算符重載為類的成員函數(shù)的語法形式如下:運(yùn)算符重載為類的成員函數(shù)的語法形式如下:運(yùn)算符重載為類的友元函數(shù)的語法形式如下:運(yùn)算符重載為類的友元函數(shù)的語法形式如下:/366例例9.1/367P186 和和+運(yùn)算符重載實(shí)例運(yùn)算符重載實(shí)例l插入符函數(shù)的一般形式為:插入符函數(shù)的一般形式為:l ostream &operator (istream & 函數(shù)的流函數(shù)的流, 類名類名&對象名對象名)l /函數(shù)代碼函數(shù)代碼l
4、 return函數(shù)的流函數(shù)的流;l/368例例9.2/369例例9.3函數(shù)調(diào)用方式;函數(shù)調(diào)用方式;直接使用運(yùn)算符直接使用運(yùn)算符/3610例例9.4/3611類運(yùn)算符和友元運(yùn)算符的區(qū)別類運(yùn)算符和友元運(yùn)算符的區(qū)別 P190l如果運(yùn)算符所需的操作數(shù),尤其是第一個(gè)操作數(shù)希望進(jìn)行隱式類型轉(zhuǎn)換,則該運(yùn)算符應(yīng)該通過友元來重載。l另一方面,如果一個(gè)運(yùn)算符的操作需要修改類對象的狀態(tài),則應(yīng)當(dāng)使用類運(yùn)算符,這樣更符合數(shù)據(jù)封裝的要求。但參數(shù)是使用引用還是對象,則要根據(jù)運(yùn)算符在使用中可能出現(xiàn)的情況來決定。/3612lfriend complex operator + (形參形參1,形參,形參2)l /函數(shù)體定義函數(shù)體定
5、義 l關(guān)鍵字friend把 complex operator + (形參1,形參2)說明成類的友元,使得它能夠訪問類complex 的私有數(shù)據(jù)。l形參可以都是對象或者對象的引用;l形參也可以一個(gè)為對象一個(gè)為引用,這要視具體問題而定。/3613例例9.5/3614例例9.6/3615流類庫流類庫l在C+中,輸入輸出操作是由“流”來處理的。所謂流流,它是C+的一個(gè)核心概念,數(shù)據(jù)從一個(gè)位置到另一個(gè)位置的流動(dòng)抽象為流流。l當(dāng)數(shù)據(jù)從鍵盤或磁盤文件流入到程序中時(shí),這樣的流稱為輸入流輸入流,把輸入數(shù)據(jù)來自的地方稱為“源”l當(dāng)數(shù)據(jù)從程序中流向屏幕或磁盤文件時(shí),這樣的流稱為輸出流輸出流,把接收輸出數(shù)據(jù)的地方稱為
6、“目標(biāo)”/3616流類庫流類庫l當(dāng)流被建立后就可以使用一些特定的操作從流中獲取數(shù)據(jù),如輸入操作;也可向流中添加數(shù)據(jù),如輸出操作。l從流中獲取數(shù)據(jù)的操作稱為提取操作,向流中添加數(shù)據(jù)的操作稱為插入操作。l執(zhí)行輸入、輸出的類體系叫做流類l提供這個(gè)流類實(shí)現(xiàn)的系統(tǒng)庫叫做流類庫/3617流類庫流類庫lC+針對流的特點(diǎn),構(gòu)造了功能強(qiáng)大的輸入輸出流庫iosistreamostreamiostreamstreambufios類用來提供一些關(guān)于對流狀態(tài)進(jìn)行設(shè)置的功能,它是一個(gè)虛基類,其它類都是從這個(gè)派生而來但streambuf不是ios類的派生類,在類ios中只是有一個(gè)指針成員,指向streambuf類的一個(gè)對象
7、。streambuf類是用來為ios類及其派生類提供對數(shù)據(jù)的緩沖支持。緩沖緩沖,是指系統(tǒng)在主存中開辟一個(gè)專用的區(qū)域用來臨時(shí)存放輸入輸出信息,這個(gè)區(qū)域稱為緩緩沖區(qū)沖區(qū)。有了緩沖以后,輸入輸出時(shí)所占用的CPU時(shí)間就大大減少了,提高了系統(tǒng)的效率。因?yàn)橹挥挟?dāng)緩沖區(qū)滿時(shí),或當(dāng)前送入的數(shù)據(jù)為新的一行時(shí),系統(tǒng)才對流中的數(shù)據(jù)進(jìn)行處理,稱為刷新刷新。itream和ostream類均是ios的公有派生類,前者提供了從流中提取數(shù)據(jù)的有關(guān)操作,后者則是提供了向流中插入數(shù)據(jù)的有關(guān)操作。iostream類是itream和ostream類公有派生的,該類并沒有提供新的操作,只是將itream和ostream類綜合在一起,提
8、供一種方便。/3618流類庫流類庫 P194l為了方便用戶對基本輸入輸出流進(jìn)行操作,只要在程序中包含頭文件iostream,就可以使用C+提供的四個(gè)預(yù)定義的標(biāo)準(zhǔn)流對象:cin、cout、cerr和clog,它們都是std名稱空間的流對象。lcin是istream類的對象,用處理可定向得標(biāo)準(zhǔn)輸入,即鍵盤輸入。lcout是ostream類的對象,用處理標(biāo)準(zhǔn)輸出,即屏幕輸出。lcerr和clog都是ostream類的對象,用來處理標(biāo)準(zhǔn)出錯(cuò)信息,并將信息顯示在屏幕上。l在這四個(gè)標(biāo)準(zhǔn)流對象中,除了cerr不支持緩沖(發(fā)送給它的內(nèi)容立即被輸出到屏幕,并且不能被重定向到其它地方),其余三個(gè)都帶有緩沖區(qū)。l標(biāo)準(zhǔn)流通常使用提取運(yùn)算符“”和插入運(yùn)算符“data;l表示沒有錯(cuò)誤和文件沒有結(jié)束時(shí),才從表示沒有錯(cuò)誤和文件沒有結(jié)束時(shí),才從文件獲取數(shù)據(jù)文件獲取數(shù)據(jù)/3633文件流文件流l處理錯(cuò)誤的成員函數(shù)及功能如下:處理錯(cuò)誤的成員函數(shù)及功能如下:成員函數(shù)功 能bad()如果進(jìn)行非法操作,返回true,否則返回falseclear()清除內(nèi)部錯(cuò)誤狀態(tài)eof()若文件讀到末尾,返回true,否則返回falsegood()如果沒有錯(cuò)誤條件和沒有設(shè)置文件介紹標(biāo)志,返回true,否則返回falsefail()與g
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《護(hù)理學(xué)的發(fā)展史》課件
- 《京承高速推介案》課件
- 二零二五年度配餐行業(yè)市場調(diào)研服務(wù)合同3篇
- 《PDCA原則的含義》課件
- 構(gòu)建健全的研究生教育質(zhì)量保障體系
- 《現(xiàn)金收付業(yè)務(wù)》課件
- 2024-2025學(xué)年高中生物 專題2 素能提升課 微生物的培養(yǎng)與分離技術(shù)說課稿 新人教版選修1
- 《汽車行駛系統(tǒng)》課件
- 七年級(jí)體育 跑跳運(yùn)動(dòng)說課稿 人教新課標(biāo)版
- 《愛我家鄉(xiāng)愛我校園》課件
- 2025屆浙江省杭州七縣高三第一次調(diào)研測試生物試卷含解析
- 跨學(xué)科實(shí)踐活動(dòng)5 基于碳中和理念設(shè)計(jì)低碳行動(dòng)方案-2024-2025學(xué)年九年級(jí)化學(xué)人教版(2024)上冊
- 2022版義務(wù)教育(歷史)課程標(biāo)準(zhǔn)(附課標(biāo)解讀)
- 第四單元整體教學(xué)設(shè)計(jì)【大單元教學(xué)】2024-2025學(xué)年八年級(jí)語文上冊備課系列(統(tǒng)編版)
- 2024年通信安全員ABC證考試題庫及解析(1000題)
- 中考數(shù)學(xué)計(jì)算題練習(xí)100道(2024年中考真題)
- 中國慢性腎臟病早期評(píng)價(jià)與管理指南2023
- 中藥材倉儲(chǔ)標(biāo)準(zhǔn)化與信息化建設(shè)
- 陰囊常見疾病的超聲診斷
- 2024屆高考數(shù)學(xué)高考總復(fù)習(xí):集合與常用邏輯用語集合的概念與運(yùn)算
- DZ∕T 0051-2017 地質(zhì)巖心鉆機(jī)型式與規(guī)格系列(正式版)
評(píng)論
0/150
提交評(píng)論