版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)字藝術(shù)設(shè)計(jì)課程教學(xué)大綱
- 物業(yè)企業(yè)客戶投訴處理流程與標(biāo)準(zhǔn)
- 物流倉儲成本核算標(biāo)準(zhǔn)指南
- 制造企業(yè)生產(chǎn)運(yùn)營流程優(yōu)化方案
- 日本作業(yè)批改體系介紹
- 客運(yùn)企業(yè)安全生產(chǎn)責(zé)任制度范本
- 智慧育兒:家庭教育經(jīng)驗(yàn)分享
- 汽車配件退貨型號協(xié)議
- 品牌授權(quán)獨(dú)家經(jīng)營協(xié)議
- 工業(yè)自動化設(shè)備維護(hù)協(xié)議
- 游戲:看表情符號猜成語PPT
- 手術(shù)室醫(yī)療廢物的管理
- 2023年運(yùn)動康復(fù)期末復(fù)習(xí)-體適能理論與訓(xùn)練(運(yùn)動康復(fù)專業(yè))考試上岸題庫歷年考點(diǎn)含答案
- 普通機(jī)床主傳動系統(tǒng)的設(shè)計(jì)課程設(shè)計(jì)說明書
- 班組工程進(jìn)度款申請表
- 四年級閱讀訓(xùn)練概括文章主要內(nèi)容(完美)
- JJG 1033-2007電磁流量計(jì)
- GB/T 629-1997化學(xué)試劑氫氧化鈉
- GB/T 37234-2018文件鑒定通用規(guī)范
- GB/T 2895-2008塑料聚酯樹脂部分酸值和總酸值的測定
- 水利工程監(jiān)理規(guī)劃78648
評論
0/150
提交評論