(隨筆)過載各種運算子總結

2021-08-19 21:28:10 字數 2893 閱讀 6116

計畫這個總結很久了,但因為一直沒有時間,所以拖到現在,真不知道自己每天都在忙些什麼東西。。。

先總結幾個常用的:

一、輸入輸出流過載「<<」「>>」(以輸出運算子為例):

固定宣告格式:

friend ostream & operator <<(ostream & output,time & obj);
注意事項:

①:輸入輸出流的過載只能用友元函式的形式過載;

②:3個「引用&」,目前最好都不要少,ostream後面的「引用&」絕對不能省;

③:在類內宣告並定義或者在類內宣告類外定義這兩種方法均可;

例如:

#includeusing namespace std;

class time

time():year(0),month(0){}

friend ostream & operator <<(ostream & output,time & obj)//類內宣告並定義;

time():year(0),month(0){}

bool operator<=(const time & obj)const//內類宣告並定義;

time():year(0),month(0){}

bool operator<=(const time & obj)const;

friend ostream & operator<<(ostream &output,time & obj);

};bool time::operator<=(const time & obj)const//類內定義,類外宣告;

注意事項:

①:「=」只能過載為成員函式;

②:一般形參前都要加「引用」;

③:最後一定要有乙個返回值;

示例**:

#includeusing namespace std;

class time

time():year(0),month(0){}

friend ostream & operator<<(ostream &output,time & obj);

time operator =(int &x)

};ostream & operator <<(ostream & output,time & obj)//流輸入輸出過載時ostream後面的&一定不要省去;

②:對於「+」,因為其為雙目運算子,且滿足交換律,所以最好還是過載為友元函式,否則的話,比如下面這種情況就會報錯(c4=4+c),詳見注釋;

#includeusing namespace std;

class complex

complex():real(0),image(0){}

complex(int r):real(r),image(0){}//用於應對下面加乙個整數的情況;

complex operator +(const complex & obj)

friend ostream & operator <<(ostream & output,complex & obj)

complex():real(0),image(0){}

complex(int r):real(r),image(0){}

friend complex operator +(const complex & ,const complex &);//const if not add,will not to operate the const num,such as "4";

friend ostream & operator <<(ostream & output,complex & obj)

increase():t(0){}

increase operator ++()//前加運算模板;

increase operator ++(int x)//後加運算模板

friend ostream & operator<<(ostream &out,increase & obj)

increase():t(0){}

friend increase operator ++(increase & obj)//前加運算模板,多乙個物件形參;

friend increase operator ++(increase & obj,int )//後加運算模板,可以只有乙個int,即不要非得int x;

friend ostream & operator<<(ostream &out,increase & obj)

~ vector ( )

int & operator [ ] ( int i )//返回值為int型;

private :

int * v ;

int size ;

};int main ( )

再如()的過載:

#include using namespace std ;

class f

;double f :: operator ( ) ( double x , double y )

int main ( )

總結:

1、只能用友元過載的:<<、>>;只能用成員函式過載的:[ ]、( )、=;

2、ostream後面一定加「&」;

3、一般來說形參括號內均加const 和 &;

4、注意友元函式形式比成員函式形式多乙個形參;

the end;

各種過載運算子過載

一 基本定義 1 c 預定義的運算子只能用於基本資料型別的運算 整型 實型 字元型 邏輯型,但是不能作用於物件之間。2 運算子過載的目的是擴充套件c 中提供的運算子的適用範圍,使之能作用於物件。3 運算子過載的實質是函式過載,可以過載為普通成員函式,也可以過載為成員函式。4 根據實參的型別決定呼叫哪...

c 過載各種運算子

copy from 以下示例中定義了乙個class test,過載了 等符號 include include using namespace std class test test const int a v a test const test t1 v t1.v 以下過載小於號 比較兩個物件的大小...

運算子過載總結

過載運算子 一,知識點總結 過載運算子函式可以對運算子做出新的解釋,即定義使用者所需要的各種操作。但運算子過載後,原有的基本語義不變,包括 不改變運算子的優先順序 不改變運算子的結合性 不改變運算子所需要的運算元 不能建立新的運算子 優先順序和結合性主要體現在過載運算子的使用上,而運算元的個數不但體...