2017.9.22

今天學(xué)習(xí)的是運(yùn)算符的重載:

運(yùn)算符重載:


使用運(yùn)算符重載的一般格式為:

類型名 ?operator ? 運(yùn)算符(形參表)

{ ?函數(shù)體 ? }

其中operator是關(guān)鍵字,類型名為重載運(yùn)算符的返回類型,即運(yùn)算結(jié)果返回類型。

例:

下面是運(yùn)算符重載的友元函數(shù):

class aa{ ? //運(yùn)算符重載的友元形式

float a;? ? float b;

public:

float &aaa(){return(a);}

float &bbb(){return(b);}

friend aa operator +(aa&,aa&);};

aa operator +(aa & a,aa& b)

{aa c;

c.a=a.a+b.a;

c.b=a.b+b.b;

return(c);? }

void main()

{? aa a,b;

a.aaa()=1; a.bbb()=2;

b.aaa()=3; b.bbb()=4;

aa c=a+b;//等價(jià)aa c=operator +(a,b);

cout<<c.aaa()<<endl<<c.bbb();}


aa c=a+b;//等價(jià)aa c=operator +(a,b);

aa c=a+b;//等價(jià)aa c=operator +(a,b);

aa c=a+b;//等價(jià)aa c=operator +(a,b);


aa operator +(aa& a,aa& b)//不提倡改變運(yùn)算符的含義


運(yùn)算符重載時(shí)參數(shù)個(gè)數(shù)不可以超過原來數(shù)目


運(yùn)算符重載時(shí)參數(shù)類型不能全為基本類型,至少有一個(gè)操作對(duì)象是自定義類型

在C++中幾乎所有的運(yùn)算符(除“.”(成員選擇符)、“.*”(成員對(duì)象選擇符)、“->*(成員指針選擇符)”、“::”、“?:”、“sizeof”外)都可以被重載。只能重載C++中已有的運(yùn)算符,不允許創(chuàng)建新的運(yùn)算符.


賦值運(yùn)算符重載

拷貝構(gòu)造函數(shù)和賦值操作符都是用來拷貝一個(gè)類的對(duì)象給另一個(gè)同類型的對(duì)象。

void fn(A a)

{ A na=a;? //拷貝構(gòu)造函數(shù):將一個(gè)對(duì)象拷貝到另一個(gè)新對(duì)象

A b;

b=a;}//賦值運(yùn)算符:將一個(gè)對(duì)象為另一個(gè)已經(jīng)存在的對(duì)象賦值

編譯器提供默認(rèn)的拷貝構(gòu)造函數(shù)和賦值運(yùn)算符的運(yùn)作機(jī)制。

就是將對(duì)象中的每個(gè)數(shù)據(jù)成員拷貝到目標(biāo)對(duì)象相應(yīng)的數(shù)據(jù)成員中。

若類的數(shù)據(jù)成員中有指向動(dòng)態(tài)分配空間的指針,通常定義拷貝構(gòu)造函數(shù),此時(shí),應(yīng)重載賦值運(yùn)算符。


類型轉(zhuǎn)換運(yùn)算符聲明的形式:

operator 類型名();

沒有參數(shù),沒有返回類型,(其返回類型由函數(shù)名字指定)但是函數(shù)體中必須包含return語句。

只能作為成員函數(shù)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容