(中職)編程語言基礎(chǔ)-C++模塊10教學(xué)課件_第1頁
(中職)編程語言基礎(chǔ)-C++模塊10教學(xué)課件_第2頁
(中職)編程語言基礎(chǔ)-C++模塊10教學(xué)課件_第3頁
(中職)編程語言基礎(chǔ)-C++模塊10教學(xué)課件_第4頁
(中職)編程語言基礎(chǔ)-C++模塊10教學(xué)課件_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、YCF正版可修改PPT(中職)編程語言基礎(chǔ)-C+模塊10教學(xué)課件模塊10運(yùn)算符重載任務(wù)1運(yùn)算符重載的定義任務(wù)2運(yùn)算符重載規(guī)則任務(wù)3運(yùn)算符重載的兩種形式任務(wù)4特殊運(yùn)算符重載舉例返回任務(wù)1運(yùn)算符重載的定義重載是面向?qū)ο笤O(shè)計(jì)的重要特征,運(yùn)算符重載是對(duì)已有的運(yùn)算符賦予多重含義,使用同一個(gè)運(yùn)算符作用于不同類型的數(shù)據(jù)導(dǎo)致不同的行為。C+中經(jīng)重載后的運(yùn)算符能直接對(duì)用戶自定義的數(shù)據(jù)進(jìn)行操作運(yùn)算,這就是C+語言中的運(yùn)算符重載所提供的功能。運(yùn)算符重載進(jìn)一步提高了面向?qū)ο蟮撵`活性、可擴(kuò)充性和可讀性。下一頁返回任務(wù)1運(yùn)算符重載的定義上一頁下一頁返回任務(wù)1運(yùn)算符重載的定義對(duì)于上述的復(fù)數(shù)類的兩個(gè)對(duì)象one和two,不能直

2、接用“one + two”來表示兩個(gè)復(fù)數(shù)的相加。但為了符合人們的習(xí)慣,有時(shí)希望對(duì)于新的數(shù)據(jù)類型仍然使用已有的一些運(yùn)算符進(jìn)行操作,如果希望用“+”來表示兩個(gè)復(fù)數(shù)的加法,這就需要對(duì)運(yùn)算符“+”進(jìn)行重載。 上一頁下一頁返回任務(wù)1運(yùn)算符重載的定義操作符是系統(tǒng)預(yù)先定義好的一些函數(shù)名稱,所以,可以把運(yùn)算符重載看作是函數(shù)重載的一種特殊形式,對(duì)于運(yùn)算符的重載和函數(shù)的重載是類似的,都是使同一個(gè)名稱具有多重含義,它體現(xiàn)了面向?qū)ο蟮某绦蛟O(shè)計(jì)的多態(tài)性。 只有類的成員函數(shù)和類的友元函數(shù)才能夠訪問類的私有數(shù)據(jù)成員,因此只有將運(yùn)算符重載為類的成員函數(shù)或是類的友元函數(shù)時(shí),才能使被重載的運(yùn)算符能夠?qū)π碌臄?shù)據(jù)類型進(jìn)行操作。上一頁

3、返回任務(wù)2運(yùn)算符重載規(guī)則在對(duì)運(yùn)算符進(jìn)行重載時(shí)要遵循以下一些規(guī)則。(1)被重載的運(yùn)算符一定不能是下面這些運(yùn)算符中的任意一個(gè):“.” 類成員運(yùn)算符“*” 指針運(yùn)算符“:” 類作用域運(yùn)算符“?:” 條件運(yùn)算符除此之外,c+的其他運(yùn)算符都可以重載。下一頁返回任務(wù)2運(yùn)算符重載規(guī)則 (2)運(yùn)算符被重載后,不能改變優(yōu)先級(jí)和結(jié)合性,也不能改變語法結(jié)構(gòu),即不能將單日運(yùn)算符重載為雙日運(yùn)算符。 (3)被重載的運(yùn)算符必須是系統(tǒng)預(yù)先已經(jīng)定義好的運(yùn)算符,即不能自己定義新的運(yùn)算符。 (4)被重載的運(yùn)算符雖然可以用來做任何事情,但是最好還是應(yīng)使其新的功能與系統(tǒng)預(yù)先定義的功能相似,使人容易理解。上一頁返回任務(wù)3運(yùn)算符重載的兩種

4、形式 重載運(yùn)算符的日的是:對(duì)于有類對(duì)象參與的運(yùn)算,使其表達(dá)式看起來像基本類型數(shù)據(jù)那樣一日了然,與我們熟悉的數(shù)學(xué)表達(dá)形式一致。因此,運(yùn)算符應(yīng)該被重載為類的成員或友元函數(shù),這樣才能直接訪問類的私有數(shù)據(jù)成員。10. 3. 1運(yùn)算符重載乃成員函數(shù)將運(yùn)算符重載為類的成員函數(shù)的格式為:operator下一頁返回任務(wù)3運(yùn)算符重載的兩種形式【例10 -2】復(fù)數(shù)類加減運(yùn)算重載成員函數(shù)形式。上一頁下一頁返回任務(wù)3運(yùn)算符重載的兩種形式上一頁下一頁返回任務(wù)3運(yùn)算符重載的兩種形式上一頁下一頁返回任務(wù)3運(yùn)算符重載的兩種形式上一頁下一頁返回任務(wù)3運(yùn)算符重載的兩種形式上一頁下一頁返回任務(wù)3運(yùn)算符重載的兩種形式10. 3. 2

5、運(yùn)算符重載為友元函數(shù)將運(yùn)算符重載為友元函數(shù)的格式為:friend operator【例10 -3】復(fù)數(shù)類加減法運(yùn)算重載友元函數(shù)形式。上一頁下一頁返回任務(wù)3運(yùn)算符重載的兩種形式上一頁下一頁返回任務(wù)3運(yùn)算符重載的兩種形式上一頁下一頁返回任務(wù)3運(yùn)算符重載的兩種形式上一頁下一頁返回任務(wù)3運(yùn)算符重載的兩種形式運(yùn)行結(jié)果:上一頁下一頁返回任務(wù)3運(yùn)算符重載的兩種形式10. 3. 3兩種重載方式討論從上面的例子可以看出,運(yùn)算符的兩種重載形式都可以實(shí)現(xiàn)我們需要的功能,而且主函數(shù)中執(zhí)行運(yùn)算的表達(dá)方式是一樣的。但是成員函數(shù)和友元函數(shù)是不同的。從表面上看,友元函數(shù)比成員函數(shù)多一個(gè)形參,友元函數(shù)的參數(shù)對(duì)應(yīng)參與運(yùn)算的操作數(shù)

6、。實(shí)際上,成員函數(shù)所在的對(duì)象就是第一個(gè)操作數(shù),成員函數(shù)如果帶參數(shù)則是第二個(gè)操作數(shù)。 雖然有些運(yùn)算符既可以重載為成員函數(shù),又可以重載為友元函數(shù);但是一般而言,應(yīng)將一元運(yùn)算符重載為成員函數(shù),將二元運(yùn)算符重載為友元函數(shù)。如果運(yùn)算符的第一個(gè)操作數(shù)為類對(duì)象,則運(yùn)算符可以重載為成員函數(shù)?!?)”、“”、“一”、“一*”及“=”必須重載為成員函數(shù))上一頁下一頁返回任務(wù)3運(yùn)算符重載的兩種形式如果運(yùn)算符有一個(gè)操作數(shù)不是當(dāng)前類的類型,則運(yùn)算符應(yīng)重載為友元函數(shù)。例如,要計(jì)算(7. 53一cl)的值,其中cl是COmp1ex類對(duì)象。 如果利用友元函數(shù)重載形式,則該表達(dá)式被解釋為: operator-(Complex

7、( 7. 53),cl) 這個(gè)結(jié)果是合法的。在參數(shù)傳遞的過程中,首先調(diào)用轉(zhuǎn)換構(gòu)造函數(shù)將7. 53轉(zhuǎn)換為Complex類型。 我們將上面的討論總結(jié)為表10-1上一頁返回任務(wù)4特殊運(yùn)算符重載舉例10. 4.1 類型轉(zhuǎn)換運(yùn)算符我們已經(jīng)知道,類的轉(zhuǎn)換構(gòu)造函數(shù)可以將數(shù)據(jù)由其他類型轉(zhuǎn)換為當(dāng)前的類類型。反過來,如果想將數(shù)據(jù)由當(dāng)前的類類型轉(zhuǎn)換為其他類型,則需要將類型轉(zhuǎn)換運(yùn)算符“()”重載為類的成員函數(shù)。其聲明形式為: 類名:operator Type/類型轉(zhuǎn)換成員函數(shù) 該語句聲明將數(shù)據(jù)由當(dāng)前的類類型轉(zhuǎn)換為Type類型,其中“Type”表示要轉(zhuǎn)換的類型。注意該成員函數(shù)沒有參數(shù),沒有返回類型,但函數(shù)體內(nèi)必須有返回

8、Type類型值的語句,如例10-4。下一頁返回任務(wù)4特殊運(yùn)算符重載舉例上一頁下一頁返回任務(wù)4特殊運(yùn)算符重載舉例上一頁下一頁返回任務(wù)4特殊運(yùn)算符重載舉例運(yùn)行結(jié)果:3在執(zhí)行“int( c)”時(shí),實(shí)際上是調(diào)用對(duì)象c的類型轉(zhuǎn)換成員函數(shù)即 c. perator int( ) .10. 4. 2復(fù)合賦值運(yùn)算符上一頁下一頁返回任務(wù)4特殊運(yùn)算符重載舉例在第模塊4章中已經(jīng)介紹了賦值運(yùn)算符的重載方法。假設(shè)在類定義中,重載了賦值運(yùn)算符“=”和加法運(yùn)算符“+”,那么復(fù)合賦值運(yùn)算符“+=”是不是就可以直接使用呢?答案是否定的。要想使“+=”適用于類對(duì)象,必須單獨(dú)進(jìn)行重載。對(duì)于其他復(fù)合賦值運(yùn)算符一也一樣,如例10-5.上

9、一頁下一頁返回任務(wù)4特殊運(yùn)算符重載舉例上一頁下一頁返回任務(wù)4特殊運(yùn)算符重載舉例上一頁下一頁返回任務(wù)4特殊運(yùn)算符重載舉例上一頁下一頁返回任務(wù)4特殊運(yùn)算符重載舉例上一頁下一頁返回任務(wù)4特殊運(yùn)算符重載舉例運(yùn)行結(jié)果: (6. 7,10. 2) 在執(zhí)行“c1+=c2;時(shí),實(shí)際上是以c2為實(shí)參,調(diào)用對(duì)象c1的運(yùn)算符重載函數(shù),即c1.operator+=(c2);”上一頁下一頁返回任務(wù)4特殊運(yùn)算符重載舉例10. 4. 3 有增和有減運(yùn)算符自增運(yùn)算符“+”和自減運(yùn)算符“-”都有前置和后置兩種情況。下面以自增運(yùn)算符為例,介紹兩種情況的重載方法。自減與自增類似,不再贅述。 對(duì)于“inta=3;, +a的含義是“a

10、的值先加1再被使用”,。+的含義是“先使用。的原值然后a再加1。重載前置自增和后置自增時(shí),應(yīng)該保持原來的含義不變。 前置+與后置+重載為成員函數(shù)的聲明形式分別為:上一頁下一頁返回任務(wù)4特殊運(yùn)算符重載舉例 consL類名&類名:operator + ( ) ;/前置+重載為成員函數(shù)的聲明形式 consL類名類名:operator + ( int) ; /后置+重載為成員函數(shù)的聲明形式 C+規(guī)定,后置一元運(yùn)算符重載為成員函數(shù)時(shí),帶一個(gè)int型參數(shù)。該參數(shù)在函數(shù)體內(nèi)并不使用,其作用只是為了和前置運(yùn)算符區(qū)分開。上一頁下一頁返回任務(wù)4特殊運(yùn)算符重載舉例上一頁下一頁返回任務(wù)4特殊運(yùn)算符重載舉例上一頁下一頁返回任務(wù)4特殊運(yùn)算符重載舉例上一頁下一頁返回任務(wù)4特殊運(yùn)算符重載舉例上一頁下一頁返回任務(wù)4特殊運(yùn)算符重載舉例上一頁下一頁返回任務(wù)4特殊運(yùn)算符重載舉例上一頁下一頁返回任務(wù)4特殊運(yùn)算符重載舉例 在執(zhí)行“+a”時(shí),實(shí)際上是調(diào)用對(duì)象a的前置自增重載函數(shù)即 a. operator + + () ;在執(zhí)行“b+”時(shí),實(shí)際上是調(diào)用對(duì)象b的后置自增重載函數(shù)即 b. operator + + ( 0 ) ,這時(shí)應(yīng)提供一個(gè)實(shí)參,可以是任意整數(shù)。10. 4. 4流提取運(yùn)算符和流插入運(yùn)算符 在標(biāo)準(zhǔn)庫的istream類中重載了提取(模塊1中稱作輸人)運(yùn)算符(),在ost

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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)論