計(jì)算機(jī)二級C重載雙目運(yùn)算符概述_第1頁
計(jì)算機(jī)二級C重載雙目運(yùn)算符概述_第2頁
計(jì)算機(jī)二級C重載雙目運(yùn)算符概述_第3頁
計(jì)算機(jī)二級C重載雙目運(yùn)算符概述_第4頁
計(jì)算機(jī)二級C重載雙目運(yùn)算符概述_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

本文格式為Word版,下載可任意編輯——計(jì)算機(jī)二級C重載雙目運(yùn)算符概述計(jì)算機(jī)二級C++重載雙目運(yùn)算符概述

引導(dǎo)語:運(yùn)算符,用于執(zhí)行程序代碼運(yùn)算,會針對一個以上操作數(shù)工程來舉行運(yùn)算。以下是我共享給大家的計(jì)算機(jī)二級C++重載雙目運(yùn)算符概述,接待閱讀!

一。作為類成員函數(shù)的重載

為了能舉行類對象和一個整型值的加法運(yùn)算,需要寫一個類的成員函數(shù)來重載雙目加法+運(yùn)算符。該函數(shù)在類中的聲明如下:

Dateoperator+intconst;

函數(shù)的聲明指出,返回值是一個Date類對象,函數(shù)名是運(yùn)算符+,只有一個整型參數(shù),而且函數(shù)是常量型的。當(dāng)編譯器察覺某個函數(shù)以加上前綴operator的真實(shí)運(yùn)算符作為函數(shù)名,就會把該函數(shù)當(dāng)作重載運(yùn)算符函數(shù)來處理。假設(shè)在表達(dá)式中,該運(yùn)算符的左邊是一個類對象,右邊是一個參數(shù)類型的一個對象,那么重載運(yùn)算符函數(shù)就會被調(diào)用。調(diào)用形式如下:

Datedt6,9,2022;

dt=dt+100;

也可以顯式的調(diào)用重載運(yùn)算符函數(shù):

dt.operator+100;

下面代碼重載了雙目加法運(yùn)算符來計(jì)算一個整數(shù)和一個Date類對象之和,并且返回Date類對象。

#includeiostream.h

classDate

intmo,da,yr;

staticintdys[];

public:

Dateintm=0,intd=0,inty=0

mo=m;da=d;yr=y;

voiddisplayconst

coutDateoperator+intconst;

;

intDate::dys[]=31,28,31,30,31,30,31,31,30,31,30,31;

DateDate::operator+intconst

Datedt=*this;

n+=dt.da;

whilen=dys[dt.mo-1]

n-=dys[dt.mo-1];

if++dt.da==13

dt.mo=1;

dt,yr++;

dt.da=n;

returndt;

intmain

Dateolddate1,1,2022;

Datenewdate;

newdate=olddate+100;

newdate.display;

return0;

二。非類成員的運(yùn)算符重載

在重載運(yùn)算符的.原那么中說到,要保持運(yùn)算符的可交換性。而上面的程序只允許Date類對象在運(yùn)算符的左邊而整型值在右邊,不支持下面的語句:

Datenewdate=100+olddate;

所以,僅僅靠一個類的成員重載運(yùn)算符是無法實(shí)現(xiàn)上面功能的。對重載雙目運(yùn)算符的類成員函數(shù)來說,總是認(rèn)定調(diào)用函數(shù)的對象位于運(yùn)算符左邊。不過,我們可以再寫一個非類成員的重載運(yùn)算符函數(shù),可以規(guī)定Date類的對象在運(yùn)算符右邊,而別的類型在運(yùn)算符左邊。例如,我們可以這樣在類的外部定義一個函數(shù):

Dateoperator+intn,Datedt

下面代碼在原先的根基上增加了一個非類成員函數(shù)來實(shí)現(xiàn)雙目加法運(yùn)算符的重載。

#includeiostream.h

classDate

intmo,da,yr;

staticintdys[];

public:

Dateintm=0,intd=0,inty=0

mo=m;da=d;yr=y;

voiddisplayconst

coutDateoperator+intconst;

;

intDate::dys[]=31,28,31,30,31,30,31,31,30,31,30,31;

DateDate::operator+intconst

Datedt=*this;

n+=dt.da;

whilen=dys[dt.mo-1]

n-=dys[dt.mo-1];

if++dt.da==13

dt.mo=1;

dt,yr++;

dt.da=n;

returndt;

Dateoperator+intn,Datedt

returndt+n;

intmain

Dateolddate1,1,2022;

Datenewdate;

newdate=olddate+100;

newdate.display;

return0;

計(jì)算機(jī)二級C++重載雙目運(yùn)算符概述

上面的例子中非類成員重載運(yùn)算符函數(shù)調(diào)用了類中的重載+運(yùn)算符來實(shí)現(xiàn)加法運(yùn)算。假設(shè)類當(dāng)中沒有供給這樣的函數(shù),那么非類成員的重載運(yùn)算符函數(shù)將被迫訪問類的私有數(shù)據(jù)來實(shí)現(xiàn)加法運(yùn)算。這樣的話,需要把這個函數(shù)聲明為類的友元,如下:

classDate

friendDateoperator+intn,Date;

;

上例中重載運(yùn)算符函數(shù)聲領(lǐng)略全部兩個參數(shù),這是由于它不是類的成員,因此它不能作為類的成員函數(shù)被調(diào)用,就缺少了一個隱含的參數(shù)。

第一個重載加法運(yùn)算符函數(shù)也可以用類的友元函數(shù)來實(shí)現(xiàn)。作為一種商定,這通常把全體為類重載的運(yùn)算符都設(shè)定為該類的友元。

例子中只給出了重載加法的代碼,我們同樣可以來重載減法,乘除法等等。

三。重載關(guān)系運(yùn)算符

假設(shè)想要對兩個日期舉行對比,譬如展現(xiàn)下面這樣的代碼:

ifolddate可以向上面用類似的方法重載關(guān)系運(yùn)算符

#includeiostream.h

classDate

intmo,da,yr;

public:

Dateintm=0,intd=0,inty=0

mo=m;da=d;yr=y;

voiddisplayconst

coutintoperator==Datedtconst;

intoperatorDatedtconst;

;

intDate::operator==Datedtconst

returnthis-mo==dt.mothis-da==dt.dathis-yr==dt.yr;

intDate::operatorDatedtconst

ifthis-yr==dt.yr

ifthis-mo==dt.moreturnthis-dadt.da;

returnthis-modt.mo;

returnthis-yrdt.yr;

intmain

Datedate12,14,2022;

Datedate26,9,2022;

Datedate32,14,2022;

ifdate1

date1.display;

coutdate2.display;

coutifdate1==date3

date1.display;

coutdate3.display;

return0;

可以類似的重載其他關(guān)系運(yùn)算符,如!=

intoperator!=Datedtreturn!*this==dt;

四。其他賦值運(yùn)算符

#includeiostream.h

classDate

intmo,da,yr;

staticintdys[];

public:

Dateintm=0,intd=0,inty=0

mo=m;da=d;yr=y;

voiddisplayconst

coutDateoperator+intconst;

Dateoperator+=int

*this=*this+n;return*this;

;

intDate::dys[]=31,28,31,30,31,30,31,31,30,31,30,31;

DateDate::operator+intconst

Datedt=*this;

n+=dt.da;

whilen=dys[dt.

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論