版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、YCF正版可修改PPT(中職)編程語言基礎(chǔ)-C+模塊10教學(xué)課件模塊10運算符重載任務(wù)1運算符重載的定義任務(wù)2運算符重載規(guī)則任務(wù)3運算符重載的兩種形式任務(wù)4特殊運算符重載舉例返回任務(wù)1運算符重載的定義重載是面向?qū)ο笤O(shè)計的重要特征,運算符重載是對已有的運算符賦予多重含義,使用同一個運算符作用于不同類型的數(shù)據(jù)導(dǎo)致不同的行為。C+中經(jīng)重載后的運算符能直接對用戶自定義的數(shù)據(jù)進行操作運算,這就是C+語言中的運算符重載所提供的功能。運算符重載進一步提高了面向?qū)ο蟮撵`活性、可擴充性和可讀性。下一頁返回任務(wù)1運算符重載的定義上一頁下一頁返回任務(wù)1運算符重載的定義對于上述的復(fù)數(shù)類的兩個對象one和two,不能直
2、接用“one + two”來表示兩個復(fù)數(shù)的相加。但為了符合人們的習(xí)慣,有時希望對于新的數(shù)據(jù)類型仍然使用已有的一些運算符進行操作,如果希望用“+”來表示兩個復(fù)數(shù)的加法,這就需要對運算符“+”進行重載。 上一頁下一頁返回任務(wù)1運算符重載的定義操作符是系統(tǒng)預(yù)先定義好的一些函數(shù)名稱,所以,可以把運算符重載看作是函數(shù)重載的一種特殊形式,對于運算符的重載和函數(shù)的重載是類似的,都是使同一個名稱具有多重含義,它體現(xiàn)了面向?qū)ο蟮某绦蛟O(shè)計的多態(tài)性。 只有類的成員函數(shù)和類的友元函數(shù)才能夠訪問類的私有數(shù)據(jù)成員,因此只有將運算符重載為類的成員函數(shù)或是類的友元函數(shù)時,才能使被重載的運算符能夠?qū)π碌臄?shù)據(jù)類型進行操作。上一頁
3、返回任務(wù)2運算符重載規(guī)則在對運算符進行重載時要遵循以下一些規(guī)則。(1)被重載的運算符一定不能是下面這些運算符中的任意一個:“.” 類成員運算符“*” 指針運算符“:” 類作用域運算符“?:” 條件運算符除此之外,c+的其他運算符都可以重載。下一頁返回任務(wù)2運算符重載規(guī)則 (2)運算符被重載后,不能改變優(yōu)先級和結(jié)合性,也不能改變語法結(jié)構(gòu),即不能將單日運算符重載為雙日運算符。 (3)被重載的運算符必須是系統(tǒng)預(yù)先已經(jīng)定義好的運算符,即不能自己定義新的運算符。 (4)被重載的運算符雖然可以用來做任何事情,但是最好還是應(yīng)使其新的功能與系統(tǒng)預(yù)先定義的功能相似,使人容易理解。上一頁返回任務(wù)3運算符重載的兩種
4、形式 重載運算符的日的是:對于有類對象參與的運算,使其表達式看起來像基本類型數(shù)據(jù)那樣一日了然,與我們熟悉的數(shù)學(xué)表達形式一致。因此,運算符應(yīng)該被重載為類的成員或友元函數(shù),這樣才能直接訪問類的私有數(shù)據(jù)成員。10. 3. 1運算符重載乃成員函數(shù)將運算符重載為類的成員函數(shù)的格式為:operator下一頁返回任務(wù)3運算符重載的兩種形式【例10 -2】復(fù)數(shù)類加減運算重載成員函數(shù)形式。上一頁下一頁返回任務(wù)3運算符重載的兩種形式上一頁下一頁返回任務(wù)3運算符重載的兩種形式上一頁下一頁返回任務(wù)3運算符重載的兩種形式上一頁下一頁返回任務(wù)3運算符重載的兩種形式上一頁下一頁返回任務(wù)3運算符重載的兩種形式10. 3. 2
5、運算符重載為友元函數(shù)將運算符重載為友元函數(shù)的格式為:friend operator【例10 -3】復(fù)數(shù)類加減法運算重載友元函數(shù)形式。上一頁下一頁返回任務(wù)3運算符重載的兩種形式上一頁下一頁返回任務(wù)3運算符重載的兩種形式上一頁下一頁返回任務(wù)3運算符重載的兩種形式上一頁下一頁返回任務(wù)3運算符重載的兩種形式運行結(jié)果:上一頁下一頁返回任務(wù)3運算符重載的兩種形式10. 3. 3兩種重載方式討論從上面的例子可以看出,運算符的兩種重載形式都可以實現(xiàn)我們需要的功能,而且主函數(shù)中執(zhí)行運算的表達方式是一樣的。但是成員函數(shù)和友元函數(shù)是不同的。從表面上看,友元函數(shù)比成員函數(shù)多一個形參,友元函數(shù)的參數(shù)對應(yīng)參與運算的操作數(shù)
6、。實際上,成員函數(shù)所在的對象就是第一個操作數(shù),成員函數(shù)如果帶參數(shù)則是第二個操作數(shù)。 雖然有些運算符既可以重載為成員函數(shù),又可以重載為友元函數(shù);但是一般而言,應(yīng)將一元運算符重載為成員函數(shù),將二元運算符重載為友元函數(shù)。如果運算符的第一個操作數(shù)為類對象,則運算符可以重載為成員函數(shù)。“()”、“”、“一”、“一*”及“=”必須重載為成員函數(shù))上一頁下一頁返回任務(wù)3運算符重載的兩種形式如果運算符有一個操作數(shù)不是當前類的類型,則運算符應(yīng)重載為友元函數(shù)。例如,要計算(7. 53一cl)的值,其中cl是COmp1ex類對象。 如果利用友元函數(shù)重載形式,則該表達式被解釋為: operator-(Complex
7、( 7. 53),cl) 這個結(jié)果是合法的。在參數(shù)傳遞的過程中,首先調(diào)用轉(zhuǎn)換構(gòu)造函數(shù)將7. 53轉(zhuǎn)換為Complex類型。 我們將上面的討論總結(jié)為表10-1上一頁返回任務(wù)4特殊運算符重載舉例10. 4.1 類型轉(zhuǎn)換運算符我們已經(jīng)知道,類的轉(zhuǎn)換構(gòu)造函數(shù)可以將數(shù)據(jù)由其他類型轉(zhuǎn)換為當前的類類型。反過來,如果想將數(shù)據(jù)由當前的類類型轉(zhuǎn)換為其他類型,則需要將類型轉(zhuǎn)換運算符“()”重載為類的成員函數(shù)。其聲明形式為: 類名:operator Type/類型轉(zhuǎn)換成員函數(shù) 該語句聲明將數(shù)據(jù)由當前的類類型轉(zhuǎn)換為Type類型,其中“Type”表示要轉(zhuǎn)換的類型。注意該成員函數(shù)沒有參數(shù),沒有返回類型,但函數(shù)體內(nèi)必須有返回
8、Type類型值的語句,如例10-4。下一頁返回任務(wù)4特殊運算符重載舉例上一頁下一頁返回任務(wù)4特殊運算符重載舉例上一頁下一頁返回任務(wù)4特殊運算符重載舉例運行結(jié)果:3在執(zhí)行“int( c)”時,實際上是調(diào)用對象c的類型轉(zhuǎn)換成員函數(shù)即 c. perator int( ) .10. 4. 2復(fù)合賦值運算符上一頁下一頁返回任務(wù)4特殊運算符重載舉例在第模塊4章中已經(jīng)介紹了賦值運算符的重載方法。假設(shè)在類定義中,重載了賦值運算符“=”和加法運算符“+”,那么復(fù)合賦值運算符“+=”是不是就可以直接使用呢?答案是否定的。要想使“+=”適用于類對象,必須單獨進行重載。對于其他復(fù)合賦值運算符一也一樣,如例10-5.上
9、一頁下一頁返回任務(wù)4特殊運算符重載舉例上一頁下一頁返回任務(wù)4特殊運算符重載舉例上一頁下一頁返回任務(wù)4特殊運算符重載舉例上一頁下一頁返回任務(wù)4特殊運算符重載舉例上一頁下一頁返回任務(wù)4特殊運算符重載舉例運行結(jié)果: (6. 7,10. 2) 在執(zhí)行“c1+=c2;時,實際上是以c2為實參,調(diào)用對象c1的運算符重載函數(shù),即c1.operator+=(c2);”上一頁下一頁返回任務(wù)4特殊運算符重載舉例10. 4. 3 有增和有減運算符自增運算符“+”和自減運算符“-”都有前置和后置兩種情況。下面以自增運算符為例,介紹兩種情況的重載方法。自減與自增類似,不再贅述。 對于“inta=3;, +a的含義是“a
10、的值先加1再被使用”,。+的含義是“先使用。的原值然后a再加1。重載前置自增和后置自增時,應(yīng)該保持原來的含義不變。 前置+與后置+重載為成員函數(shù)的聲明形式分別為:上一頁下一頁返回任務(wù)4特殊運算符重載舉例 consL類名&類名:operator + ( ) ;/前置+重載為成員函數(shù)的聲明形式 consL類名類名:operator + ( int) ; /后置+重載為成員函數(shù)的聲明形式 C+規(guī)定,后置一元運算符重載為成員函數(shù)時,帶一個int型參數(shù)。該參數(shù)在函數(shù)體內(nèi)并不使用,其作用只是為了和前置運算符區(qū)分開。上一頁下一頁返回任務(wù)4特殊運算符重載舉例上一頁下一頁返回任務(wù)4特殊運算符重載舉例上一頁下一頁返回任務(wù)4特殊運算符重載舉例上一頁下一頁返回任務(wù)4特殊運算符重載舉例上一頁下一頁返回任務(wù)4特殊運算符重載舉例上一頁下一頁返回任務(wù)4特殊運算符重載舉例上一頁下一頁返回任務(wù)4特殊運算符重載舉例 在執(zhí)行“+a”時,實際上是調(diào)用對象a的前置自增重載函數(shù)即 a. operator + + () ;在執(zhí)行“b+”時,實際上是調(diào)用對象b的后置自增重載函數(shù)即 b. operator + + ( 0 ) ,這時應(yīng)提供一個實參,可以是任意整數(shù)。10. 4. 4流提取運算符和流插入運算符 在標準庫的istream類中重載了提取(模塊1中稱作輸人)運算符(),在ost
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- Unit2 What's the elephant doing(說課稿)-2024-2025學(xué)年外研版(三起)英語四年級上冊
- 15《八角樓上》(說課稿)2024-2025學(xué)年-統(tǒng)編版二年級語文上冊001
- 7《不甘屈辱奮勇抗爭-圓明園的訴說》(說課稿)統(tǒng)編版道德與法治五年級下冊
- 2023七年級英語下冊 Unit 2 What time do you go to school Section A 第1課時(1a-2d)說課稿 (新版)人教新目標版
- 8大家的“朋友”(說課稿)-部編版道德與法治三年級下冊
- 2024-2025學(xué)年高中歷史 第一單元 中國古代的農(nóng)耕經(jīng)濟 第5課 農(nóng)耕時代的商業(yè)與城市(1)教學(xué)說課稿 岳麓版必修2
- 2024年八年級歷史下冊 第三單元 第11課 為實現(xiàn)中國夢而努力奮斗說課稿 新人教版
- 2024年三年級品社下冊《學(xué)看平面圖》說課稿 山東版
- 2025三元區(qū)國有商品林采伐與銷售權(quán)轉(zhuǎn)讓合同書
- Unit 5 Colours Lesson 2 (說課稿)-2024-2025學(xué)年人教新起點版英語一年級上冊
- 2025年公司品質(zhì)部部門工作計劃
- 2024年世界職業(yè)院校技能大賽高職組“市政管線(道)數(shù)字化施工組”賽項考試題庫
- 華為研發(fā)部門績效考核制度及方案
- CSC資助出國博士聯(lián)合培養(yǎng)研修計劃英文-research-plan
- 《環(huán)境管理學(xué)》教案
- 2025年蛇年年度營銷日歷營銷建議【2025營銷日歷】
- (一模)寧波市2024學(xué)年第一學(xué)期高考模擬考試 數(shù)學(xué)試卷(含答案)
- 冀少版小學(xué)二年級下冊音樂教案
- 父母贈與子女農(nóng)村土地協(xié)議書范本
- 《師范硬筆書法教程(第2版)》全套教學(xué)課件
- 中國聯(lián)通H248技術(shù)規(guī)范
評論
0/150
提交評論