過載運算子

2021-08-20 06:10:35 字數 2506 閱讀 2047

過載運算子規則

可以過載的運算子:+ - * / % & | ~ ! () new delate

不能過載的運算子:

.     .*     ::     ?:     sizeof

過載運算子函式可以對運算子作出新的解釋,即定義使用者所需要的各種操作。但運算子過載後,原有的基本語義不變,包括:

1.不改變運算子的優先順序;

2.不改變運算子的結合性;

3.不改變運算子所需要的運算元。

語法形式:

型別 類名::operator op(參數列)

//相對於該類定義的操作

其中,「型別」是函式的返回值。「類名」是要過載該運算子的類。「op」表示要過載的運算子。函式名是「operator op」,由關鍵字operator和過載的運算子op組成。「參數列」列出該運算子所需要的運算元。

用成員函式過載運算子

成員運算子函式的原型在類的內部宣告格式如下:

class x

//..

返回型別operator運算子(形參表);

//..

在類外定義成員運算子函式的格式如下:

返回型別 x:operator運算子(形參表)

函式體用友元函式過載運算子

1.在第乙個引數需要隱式轉換的情形下,使用友元函式過載

2.友元函式沒有this指標,所需運算元都必須在參數列顯示

3.c++中不能用友元函式過載的運算子有:   =   ()        ->

例:複數運算

#include

using namespace std;

class complex

public:

complex(double r=0,double i=0)

complex(int a)

void print()const;

friend complex operator+(const complex & c1,const complex & c2);

friend complex operator-(const complex & c1,const complex & c2);

friend complex operator-(const complex & c);

private:

double real,image;

complex operator +(const complex & c1,const complex & c2)

double r=c1.real+c2.real;

double i=c1.image+c2.image;

return complex(r,i);

complex operator-(const complex &c1,const complex & c2)

double r=c1.real-c2.real;

double i=c1.image-c2.image;

return complex(r,i);

complex operator-(const complex & c)

return complex(-c.real,-c.image);

void complex::print()const

cout<<"("<過載賦值運算子

1.賦值運算子過載用於物件資料的複製

2.operator=必須過載為成員函式

3.過載函式的原型為:

類名 & 類名::operator=(類名);

4.運算子和()是二元運算子

5.和()只能用成員函式過載,不能用友元函式過載

過載流插入和流提取運算子:

1.istream和ostream是c++的預定義流類

2.cin是istream的物件,cout是ostream的物件

3.運算子《由ostream過載為插入操作,用於輸出基本型別資料

4.運算子》由istream過載為提取操作,用於輸入基本型別資料

5.用友元函式過載《和》,輸入和輸出使用者自定義的資料型別

過載輸出運算子「<<"(只能被過載為友元函式,不能過載為成員函式)

定義輸出運算子」<<"過載函式的一般格式如下:

ostream& operator<<(ostream& out,class name &obj)

outout過載輸入函式「>>」(只能被過載為友元函式)

定義輸入運算子函式「>>」過載函式的一般格式如下:

istream& operate>>(istream& in,const name &obj)

in>>obj.item1;

in>>obj.item2;

.....

in>>obj.itemn;

return in;

學習感想:通過對過載函式的學習,我感覺對函式呼叫有了跟深一步的了解,使函式使用更加方便,提高了程式設計的效率。

過載運算子

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

過載運算子

1.當乙個過載的運算子是成員函式時,this繫結到左側運算物件。成員運算子函式的引數比運算物件的數量少乙個。非成員函式呼叫等價於 data1 data2 普通表示式 operator data1,data2 等價的函式呼叫成員函式呼叫等價於 data1 data2 普通表示式 data1.opera...