版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第08講 函數(shù)重載和運算符重載C+ 在同一作用域中的某個函數(shù)和運算符指定多個定義,分別稱為函數(shù)重載和運算符重載。重載 是指一個與之前已經(jīng)在該作用域內(nèi) 過的函數(shù)或方法具有相同名稱的 , 但是它們的參數(shù)列表與定義實現(xiàn)不相同。當(dāng)我們調(diào)用一個重載函數(shù)或重載運算符時,編譯器通過把我們所使用的參數(shù)類型與定義中的參數(shù)類型進(jìn)行比較,然后選用最合適的。選擇最合適的重載函數(shù)或重載運算符的過程, 稱為重載決策。函數(shù)重載在同一個作用域內(nèi),可以 幾個功能類似的同名函數(shù),但是這些同名函數(shù)的參數(shù)列表(指參數(shù)的個數(shù)、類型和順序)必須不同。下面的實例中,同名函數(shù) print() 被用于輸出不同的數(shù)據(jù)類型:1 #include
2、<iostream>2 using namespace std;34 class printData5 6 public:7 void print(int i)8 9 cout "整數(shù)為: " i endl;10 1112 void print(double f)13 14 cout "浮點數(shù)為: " f endl;15 16<<<<<<<<<<<<運行結(jié)果:運算符重載重載的運算符是帶有特殊名稱的函數(shù),函數(shù)名是由關(guān)鍵字 operator 和其后要重載的運算符符號 的。與其
3、他函數(shù)一樣,重載運算符有一個返回類型和一個參數(shù)列表。加法運算符用于把兩個 Box 對象相加,返回最終的 Box 對象。大多數(shù)的重載運算符可被定義為普通的非成員函數(shù)或者被定義為類成員函數(shù)。如果我們定義上面的函數(shù)為類的非成員函數(shù),那么我們需要為每次操作傳遞兩個參數(shù),如下所示:下面的實例使用成員函數(shù)演示了運算符重載的概念。在這里,對象作為參數(shù)進(jìn)行傳遞, 對象的屬性使用 this 運算符進(jìn)行 ,如下所示:1 Box operator+(const Box&, const Box&);2 <類型> operator<運算符>(參數(shù)一,參數(shù)二);1 Box oper
4、ator+(const Box&);2 <類型> operator <運算符>(參數(shù)列表);17 void print(char c)18 19 cout "字符串為: " c endl;20 21 ;2223 int main()24 25 printData pd;26 pd.print(5); / 輸出整數(shù)27 pd.print(500.263); / 輸出浮點數(shù)28 char c = "Hello C+" / 輸出字符串29 pd.print(c);30 return 0;31 <<<<&l
5、t;<1 #include <iostream>2 using namespace std;34 class Box5 6 public:78 double getVolume(void) / 計算體積9 10 return length * width * height;11 12 void setLength(double len) / 設(shè)置長度13 14 length = len;15 1617 void setWidth(double wid) / 設(shè)置寬度18 19 width = wid;20 2122 void setHeight(double hei) / 設(shè)
6、置高度23 24 height = hei;25 26 / 重載 + 運算符,用于把兩個 Box 對象相加27 Box operator+(const Box& b)28 29 Box box;30 box.length = this length + b.length;31 box.width = this width + b.width;32 box.height = this height + b.height;33 return box;34 35 private:36 double length; / 長度37 double width; / 寬度38 double heig
7、ht; / 高度39 ;40>>>運行結(jié)果:有哪些可重載的運算符?雙目算術(shù)運算符+(加),-(減),*(乘),/(除),%(取余)關(guān)系運算符=(等于),!=(不等于),<(小于),>(大于),<=(小于等于),>=(大于等41 int main()42 43 Box Box1; / Box1,類型為 Box44 Box Box2; / Box2,類型為 Box45 Box Box3; / Box3,類型為 Box4647 / Box1 參數(shù)設(shè)置48 Box1.setLength(10.0);49 Box1.setWidth(10.0);50 Box1.
8、setHeight(10.0);5152 / Box1 的體積53 cout "Box1的體積為: " Box1.getVolume() endl;5455 / Box2 參數(shù)設(shè)置56 Box2.setLength(20.0);57 Box2.setWidth(20.0);58 Box2.setHeight(20.0);5960 / Box2 的體積61 cout "Box2的體積為: " Box2.getVolume() endl;6263 / 把兩個對象相加,得到 Box3 的體積64 Box3 = Box1 + Box2;65 cout "
9、;Box3的體積為: " Box3.getVolume() endl;6667 return 0;68 <<<<<<<<<<<<<<<<<<有哪些不能重載的運算符?重載負(fù)號運算符和小于號運算符:1 #include <iostream>2 using namespace std;34 class CDistance5 6 public:7 CDistance(int i) / 構(gòu)造函數(shù)重載8 9 x = i;10 11 CDistance(int a, int b)
10、 / 構(gòu)造函數(shù)重載12 成員 運算符.成員指針 運算符.*,->*域運算符:長度運算符sizeof條件運算符?:預(yù)處理運算符#于)邏輯運算符|(邏輯或),&&(邏輯與),!(邏輯非)單目運算符+ (正),-(負(fù)),*(指針),&(取地址)自增自減運算符+(自增),-(自減)位運算符| (按位或),& (按位與),(按位取反),(按位異或),,<< (左移),>> (右移)賦值運算符=,+=,-=,*=,/= ,%=,&=,|=,=,<<=,>>=空間申請與new, delete, new , dele
11、te其他運算符()(函數(shù)調(diào)用),->(成員 ),,(逗號),(下標(biāo))13 y =14 z =a;b;15 1617 CDistance operator () / 重載負(fù)號運算符18 19 cout "調(diào)用負(fù)號運算符重載函數(shù)" endl;20 x = x;21 cout "重載負(fù)號后的值為:" x endl;22 return CDistance(x);23 2425 bool operator <(const CDistance &d) / 重載小于號運算符26 27 cout "調(diào)用小于運算符重載函數(shù)" end
12、l;28 if (y < d.y) (y d.y z < d.z)29 30 cout "d3 < d2" endl;31 return true;32 33 else34 35 cout "d1 > d2" endl;36 return false;37 38 39 private:40 int x;41 int y;42 int z;43 ;444546 int main()47 48 CDistance d1(10), d2(5); / 創(chuàng)建對象49 d1; / 負(fù)號運算符重載50 cout endl;51 d2; / 負(fù)號
13、運算符重載52 cout endl;<<<<<<<<<<<<&&=&&<<<<<<<<<<<<<<重載遞增運算符:1 #include <iostream>2 using namespace std;34 class Time5 6 public:7 Time()8 9 hours = 0;10 minutes = 0;11 12 Time(int h, int m)13 14 hours = h
14、;15 minutes = m;16 17 void PrintTimeFunc() / 輸出時間成員函數(shù)18 19 cout hours ":" minutes endl;20 21 Time operator () / 重載前綴遞增運算符 +i22 23 cout "調(diào)用前置遞增運算符重載函數(shù)" endl;24 minutes; / 對象加125 if (minutes 60)26 27 hours;28 minutes = minutes 60;29 30 return Time(hours, minutes);31 32 Time operato
15、r (int) / 重載后綴遞增運算符 i+33 +>=+<<<<+<<<<<<<<53 CDistance d3(33, 40), d4(10, 30);54 d1 < d2; / 小于號運算符重載5556 return 0;57 C+字符串C+字符串類:1 #include <iostream>2 #include <string>34 using namespace std;534 cout<<"調(diào)用后置遞增運算符重載函數(shù)"<<endl;
16、35 Time t(hours, minutes); / 保存原始值36 minutes; / 對象加137 if (minutes 60)38 39 hours;40 minutes = minutes 60;41 4243 return t;44 45 private:46 int hours; / 0 2347 int minutes; / 0 5948 ;495051 int main()52 53 Time t1(11, 59), t2(10, 50), t3(0, 0);54 t1.PrintTimeFunc(); / 顯示t1時間55 t1; / t1加156 t1.PrintT
17、imeFunc(); / 顯示t1時間57 cout endl;58 t2.PrintTimeFunc();59 t3=t2 ; / t2+的結(jié)果傳遞給t360 cout "t3的結(jié)果為:" / 顯示t3時間61 t3.PrintTimeFunc();62 t2.PrintTimeFunc(); / 顯示t2時間63 return 0;64 <<+<<+>=+6 int main ()7 8 string str1 = "Hello"9 string str2 = "World"10 string str3;11 int len ;1213 / str1 到 str314 str3 = str1;15 cout "str3 : "
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年防火卷簾門技術(shù)服務(wù)與維護(hù)合同
- 四年級體育之旅回顧
- 雙十一家居營銷攻略
- 2024年知識產(chǎn)權(quán)產(chǎn)學(xué)研多方合作協(xié)議范本版B版
- 勞動力量成就未來
- 媒體變革與轉(zhuǎn)型
- 外賣代運營合同(2篇)
- 大學(xué)生就業(yè)服務(wù)平臺就業(yè)協(xié)議書范本(2篇)
- 2024無錫市房產(chǎn)買賣交易合同范本3篇
- 2024水電暖改造與清包施工合同2篇
- 2021-2022學(xué)年浙江省紹興市上虞區(qū)人教版四年級上冊期末質(zhì)量評估數(shù)學(xué)試卷
- 成功九大理念
- 初中英語七選五經(jīng)典5篇(附帶答案)
- 原發(fā)性硬化性膽管炎的課件
- 產(chǎn)品生產(chǎn)進(jìn)度計劃匯總
- 東軟新一代電子病歷方案課件
- 【閱讀提升】部編版語文五年級下冊第八單元閱讀要素解析 類文閱讀課外閱讀過關(guān)(含答案)
- 平臺入駐方案
- 人教版化學(xué)選修一1.4《微生物和微量元素(微量元素與人體健康)》課件
- 小學(xué)科學(xué)試卷分析及改進(jìn)措施
- 高位肛瘺的護(hù)理查房
評論
0/150
提交評論