C語(yǔ)言程序設(shè)計(jì)PPT課件_第1頁(yè)
C語(yǔ)言程序設(shè)計(jì)PPT課件_第2頁(yè)
C語(yǔ)言程序設(shè)計(jì)PPT課件_第3頁(yè)
C語(yǔ)言程序設(shè)計(jì)PPT課件_第4頁(yè)
C語(yǔ)言程序設(shè)計(jì)PPT課件_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、C+語(yǔ)言程序設(shè)計(jì)第十一組C+語(yǔ)言程序設(shè)計(jì)第九章 類(lèi)的特殊成員C+語(yǔ)言程序設(shè)計(jì)1C+語(yǔ)言程序設(shè)計(jì)2基本知識(shí)a9.5 運(yùn)算符重載 運(yùn)算符重載 是C+的一個(gè)特性,使得程序員可以把C+的運(yùn)算符擴(kuò)展到用戶(hù)自定義的類(lèi)類(lèi)型中 C+中預(yù)定義的運(yùn)算符,如+、=、等,其操作對(duì)象只能是基本數(shù)據(jù)類(lèi)型,對(duì)于很多用戶(hù)自定義類(lèi)型,也需要類(lèi)似的運(yùn)算操作 使用運(yùn)算符重載可以使C+代碼更直觀、易懂,函數(shù)調(diào)用更方便、簡(jiǎn)潔 運(yùn)算符重載的實(shí)質(zhì)就是函數(shù)重載 對(duì)已有的運(yùn)算符賦予多重含義,使同一運(yùn)算符作用于不同類(lèi)型的數(shù)據(jù)時(shí)發(fā)生不同的行為C+語(yǔ)言程序設(shè)計(jì)39.5 運(yùn)算符重載 例:使用字符串處理函數(shù)完成字符串的復(fù)制和連接C+語(yǔ)言程序設(shè)計(jì)4/使用

2、字符串處理函數(shù)復(fù)制和連接字符串使用字符串處理函數(shù)復(fù)制和連接字符串#include #include using namespace std;void main() char *s1=Hello; char *s2=world; char s380 =; strcpy(s3,s1); /字符串復(fù)制字符串復(fù)制 couts3endl; strcat(s3,s2); /字符串連接字符串連接 couts3endl;9.5 運(yùn)算符重載 例:使用重載運(yùn)算符“=”和“+”完成字符串的復(fù)制和連接C+語(yǔ)言程序設(shè)計(jì)5/使用重載運(yùn)算符復(fù)制和連接字符串使用重載運(yùn)算符復(fù)制和連接字符串#include #include u

3、sing namespace std;void main() string s1=Hello; string s2=world; string s3; s3=s1; /字符串復(fù)制字符串復(fù)制 couts3endl; s3=s1+s2; /字符串連接字符串連接 couts3endl;9.5 運(yùn)算符重載 運(yùn)算符重載的規(guī)則 重載運(yùn)算符時(shí),運(yùn)算符的運(yùn)算順序和優(yōu)先級(jí)不變,操作數(shù)個(gè)數(shù)不變 不能創(chuàng)造新的運(yùn)算符,只能重載C+中已有的運(yùn)算符,并且規(guī)定有6個(gè)運(yùn)算符不能重載 一般來(lái)講,重載后的運(yùn)算符的功能應(yīng)當(dāng)與運(yùn)算符的實(shí)際意義相符C+語(yǔ)言程序設(shè)計(jì)6運(yùn)運(yùn) 算算 符符含含 義義.類(lèi)屬關(guān)系運(yùn)算符類(lèi)屬關(guān)系運(yùn)算符.*成員指針運(yùn)

4、算符成員指針運(yùn)算符:作用域運(yùn)算符作用域運(yùn)算符?:條件運(yùn)算符條件運(yùn)算符#編譯預(yù)處理符號(hào)編譯預(yù)處理符號(hào)sizeof取數(shù)據(jù)類(lèi)型的長(zhǎng)度取數(shù)據(jù)類(lèi)型的長(zhǎng)度9.5 運(yùn)算符重載 運(yùn)算符重載的形式: 重載為類(lèi)的成員函數(shù) 函數(shù)定義可以放在類(lèi)的聲明中,也可以在類(lèi)聲明的外部 類(lèi)外定義的形式為:函數(shù)類(lèi)型 類(lèi)名:operator 運(yùn)算符(形參表) 函數(shù)體 重載為類(lèi)的友元函數(shù) 類(lèi)的聲明中需要聲明該函數(shù)為友元函數(shù):friend 函數(shù)類(lèi)型 operator 運(yùn)算符(形參表); 函數(shù)定義必須在類(lèi)的外部,形式為:函數(shù)類(lèi)型 operator 運(yùn)算符(形參表) 函數(shù)體 C+語(yǔ)言程序設(shè)計(jì)79.5 運(yùn)算符重載 關(guān)于運(yùn)算符重載定義的幾點(diǎn)說(shuō)明

5、 函數(shù)類(lèi)型指明了重載運(yùn)算符的返回值類(lèi)型,也就是運(yùn)算結(jié)果類(lèi)型 operator是定義運(yùn)算符重載的關(guān)鍵字 “運(yùn)算符”即要重載的運(yùn)算符名稱(chēng) 形參表給出的是運(yùn)算符需要的操作數(shù) 重載為成員函數(shù):對(duì)象本身就是其中的一個(gè)操作數(shù),形參表內(nèi)參數(shù)的數(shù)目比操作數(shù)的數(shù)目少一個(gè) 重載為友元函數(shù):每個(gè)形參代表運(yùn)算符的一個(gè)操作數(shù),形參表內(nèi)參數(shù)的數(shù)目等同于操作數(shù)的數(shù)目C+語(yǔ)言程序設(shè)計(jì)8 例:創(chuàng)建一個(gè)復(fù)數(shù)類(lèi),將+、+=運(yùn)算符重載為成員函數(shù)9.5 運(yùn)算符重載C+語(yǔ)言程序設(shè)計(jì)9/創(chuàng)建一個(gè)復(fù)數(shù)類(lèi),將創(chuàng)建一個(gè)復(fù)數(shù)類(lèi),將+、+=運(yùn)算符重載為成員函數(shù)運(yùn)算符重載為成員函數(shù)#include #include using namespace s

6、td;class complexpublic: complex(double real=0,double imag=0): r(real),i(imag) complex operator +(complex&);/重載運(yùn)算符的函數(shù)原型重載運(yùn)算符的函數(shù)原型 complex operator -(complex&); complex& operator +=(complex&); void print() coutsetiosflags(ios:showpos)r iiendl;private: double r , i;9.5 運(yùn)算符重載C+語(yǔ)言程序設(shè)計(jì)10co

7、mplex complex:operator +(complex& c)/重載重載“+”運(yùn)算符運(yùn)算符 return complex(r+c.r,i+c.i);complex complex:operator -(complex& c)/重載重載“-”運(yùn)算符運(yùn)算符 return complex(r-c.r,i-c.i);Complex& complex:operator +=(complex& c)/重載重載“+=”運(yùn)算符運(yùn)算符 r+=c.r; i+=c.i; return *this;9.5 運(yùn)算符重載C+語(yǔ)言程序設(shè)計(jì)11void main() complex

8、c1(1,1),c2(3,3),c3; c3=c1+c2; /復(fù)數(shù)相加復(fù)數(shù)相加 c3.print(); c3=c1-c2; /復(fù)數(shù)相減復(fù)數(shù)相減 c3.print(); c3+=c2+=c1; /復(fù)數(shù)相加后賦值復(fù)數(shù)相加后賦值 c3.print(); 例:創(chuàng)建一個(gè)復(fù)數(shù)類(lèi),將+、+=運(yùn)算符重載為友元函數(shù)9.5 運(yùn)算符重載C+語(yǔ)言程序設(shè)計(jì)12/創(chuàng)建一個(gè)復(fù)數(shù)類(lèi),將創(chuàng)建一個(gè)復(fù)數(shù)類(lèi),將+、+=運(yùn)算符重載為成員函數(shù)運(yùn)算符重載為成員函數(shù)#include #include using namespace std;class complexpublic: complex(double real=0,double i

9、mag=0): r(real),i(imag) friend complex operator +(complex&,complex&); friend complex operator -(complex&,complex&); friend complex& operator +=(complex&,complex&); void print() coutsetiosflags(ios:showpos)r iiendl;private: double r , i;9.5 運(yùn)算符重載C+語(yǔ)言程序設(shè)計(jì)13complex operator

10、+(complex& c1,complex& c2) /重載重載“+”運(yùn)算符運(yùn)算符 return complex(c1.r+c2.r,c1.i+c2.i);complex operator -(complex& c1,complex& c2) /重載重載“-”運(yùn)算符運(yùn)算符 return complex(c1.r-c2.r,c1.i-c2.i);complex& operator +=(complex& c1,complex& c2) /重載重載“+=”運(yùn)算符運(yùn)算符 c1.r+=c2.r; c1.i+=c2.i; return c1;9.5 運(yùn)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論