operator過載運算子

2021-10-09 18:39:06 字數 2242 閱讀 3557

c++已經為基本型別和標註庫中的資料型別提供了運算子操作,我們自定義資料型別的話有時就需要過載運算子實現自定義函式來實現類似功能了,此時可以把operator ==、operator=、operator*等操作符整體看作乙個函式名。

一、單目運算子++/--(以++為例)

1、過載為類的成員函式

假設obj表示物件,func為成員函式,那麼func的前置過載形式 func obj 相當於 obj.operator func(),無形參。前置++運算子表示先自增1然後返回物件本身,那麼針對前置++就是++ obj表示obj.operator++()。

假設obj表示物件,func為成員函式,那麼func的後置過載形式 obj func 相當於 obj.func(0),為了和前置運算子區分,有乙個int型引數。後置++運算子表示先拷貝乙份物件資料然後原物件自增1最後返回之前拷貝的物件資料,那麼針對後置++就是 obj++ 表示obj.operator++(0)。

#includeclass rational

rational& operator++()

rational operator++(int)

void showdata()

private:

int mnumerator,mdenominator;

};int main()

執行**列印log如下:

operator++(),back ++

showdata,mnumerator=3,mdenominator=4

operator++(),front ++

showdata,mnumerator=4,mdenominator=5

2、過載為類的非成員函式

假設obj表示物件,func為成員函式,那麼func的前置過載形式 func obj 相當於 operator func(obj)無形參。前置++運算子表示先自增1然後返回物件本身,那麼針對前置++就是++ obj表示operator ++(obj)。

假設obj表示物件,func為成員函式,那麼func的後置過載形式 obj func 相當於 operator func(obj,0)無形參。針對後置++就是++ obj表示operator ++(obj,0)。

注意:如果運算子的過載函式需要操作類的私有成員,需要將此函式宣告為該類的友元。

#includeclass rational

void showdata()

friend rational& operator++(rational& rational); //宣告友元函式

friend rational operator++(rational& rational,int); //宣告友元函式

private:

int mnumerator,mdenominator;

};rational& operator++(rational& rational)

rational operator++(rational& rational,int)

int main()

執行列印log如下:

operator++(),back ++

showdata,mnumerator=3,mdenominator=4

operator++(),front ++

showdata,mnumerator=4,mdenominator=5

二、雙目運算子

以+運算子過載為類的非成員函式舉例

表示式obj1 func obj2 等同於 operator func(obj1,obj2),如果運算子的過載函式需要操作類的私有成員,需要將此函式宣告為該類的友元。

#includeclass rational

void showdata()

friend rational operator+(rational rational1,rational rational2);//宣告友元函式

private:

int mnumerator,mdenominator;

};rational operator+(rational rational1,rational rational2)

int main()

執行列印log如下:

operator+

showdata,mnumerator=6,mdenominator=8

operator運算子過載

運算子過載 一 作為類成員函式的過載 為了能進行類物件和乙個整型值的加法運算,需要寫乙個類的成員函式來過載雙目加法 運算子。該函式在類中的宣告如下 date operator int const 函式的宣告指出,返回值是乙個date類物件,函式名是運算子 只有乙個整型引數,而且函式是常量型的。當編譯...

過載運算子

題目描述 定義乙個矩形類,資料成員包括左下角和右上角座標,定義的成員函式包括必要的建構函式 輸入座標的函式,實現矩形加法,以及計算並輸出矩形面積的函式。要求使用提示中給出的測試函式並不得改動。兩個矩形相加的規則是 決定矩形的對應座標分別相加,如 左下角 1,2 右上角 3,4 的矩形,與 左下角 2...

過載運算子

include include using namespace std class test test const int a v a test const test t1 v t1.v 以下過載小於號 比較兩個物件的大小 bool operator const test t1 const 比較物件...