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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

4、算符成員指針運算符:作用域運算符作用域運算符?:條件運算符條件運算符#編譯預處理符號編譯預處理符號sizeof取數據類型的長度取數據類型的長度9.5 運算符重載 運算符重載的形式: 重載為類的成員函數 函數定義可以放在類的聲明中,也可以在類聲明的外部 類外定義的形式為:函數類型 類名:operator 運算符(形參表) 函數體 重載為類的友元函數 類的聲明中需要聲明該函數為友元函數:friend 函數類型 operator 運算符(形參表); 函數定義必須在類的外部,形式為:函數類型 operator 運算符(形參表) 函數體 C+語言程序設計79.5 運算符重載 關于運算符重載定義的幾點說明

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

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

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

8、c1(1,1),c2(3,3),c3; c3=c1+c2; /復數相加復數相加 c3.print(); c3=c1-c2; /復數相減復數相減 c3.print(); c3+=c2+=c1; /復數相加后賦值復數相加后賦值 c3.print(); 例:創(chuàng)建一個復數類,將+、+=運算符重載為友元函數9.5 運算符重載C+語言程序設計12/創(chuàng)建一個復數類,將創(chuàng)建一個復數類,將+、+=運算符重載為成員函數運算符重載為成員函數#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 運算符重載C+語言程序設計13complex operator

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

溫馨提示

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

評論

0/150

提交評論