計畫這個總結很久了,但因為一直沒有時間,所以拖到現在,真不知道自己每天都在忙些什麼東西。。。
先總結幾個常用的:
一、輸入輸出流過載「<<」「>>」(以輸出運算子為例):
固定宣告格式:
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 以下過載小於號 比較兩個物件的大小...
運算子過載總結
過載運算子 一,知識點總結 過載運算子函式可以對運算子做出新的解釋,即定義使用者所需要的各種操作。但運算子過載後,原有的基本語義不變,包括 不改變運算子的優先順序 不改變運算子的結合性 不改變運算子所需要的運算元 不能建立新的運算子 優先順序和結合性主要體現在過載運算子的使用上,而運算元的個數不但體...