基本知識點:
|不可過載的算符:
.::.*?:sizeof
|可過載的運算子:+、
-、 *、
/、 %、
^、 &、
|、 ~、
!、 =、
<
、 >
、 +=
、 -=
、 *=
、 /=
、 <<
、 >>
、 ==
、 !=
、 <=
、 >=
、 &&
、 ||
、 ++
、 --
、等|過載運算子的限制:
不改變運算子的優先順序;
不改變運算子的結合性;
不改變運算子所需要的運算元;
不能改變新的運算子;
可對運算子作出新的解釋,原有的基本語義不變;
|運算子函式可過載為成員函式和友元函式;
一元運算子:
過載成員函式:
object.operator op()
過載友元函式:
operator op(object)
二元運算子:
objectl op objectr
過載成員函式:
objectl.operator op(objectr)
過載友元函式:
operator op(objectl,objectr)
運算子過載為成員函式基本模板:
class x
;返回型別x::operator運算子(形參表)
雙目運算子過載為成員函式:
形參表中僅有乙個引數,作為運算子的右運算元,
當前物件作為運算子的左運算元;
過載複數加號樣例:
#include using namespace std;
class complex
complex(double r,double i)
complex operator + (complex &c2);
void display( );
private:
double real;
double imag;
};complex complex:: operator + (complex &c2)
void complex::display( )
time(int m,int s):minute(m),sec(s){}
time operator++();
time operator++(int);
private:
int minute,sec;
};time time::operator()
return *this;
}time time::operator++(int)
return temp;
}
用友元函式過載:
|在第乙個引數需要隱式轉換的情形下,使用友元函式過載運算子是正確的選擇;
|友元函式沒有
this
指標,所需運算元都必須在參數列顯示;
|c++中不能用友元函式過載的運算子有=、
()、、->;
樣例:
#include using namespace std;
class complex
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,complex&c2)
complex operator-(const complex&c)
void complex::print()const
void display( )
const
void display( )
const
過載輸出流模板:
ostream& operator<<(ostream& out,class_name& obj)
; int main()
vector::vector( int size )
v = new int[ size ] ;
len = size ;
} vector :: ~vector()
ostream & operator << ( ostream & output, vector & ary )
istream & operator >> ( istream & input, vector & ary )
int & vector :: operator ( int i )
學習心得:
過載各類運算子的目的是為了根據人的需求更加方便的處理新型資料以及成組的資料,使得主函式中語句更加簡便,不需要重複書寫冗雜的語句,賦予各種運算子新的功能及含義,通過函式擴充套件了運算子語義。
開拓了學習程式設計的思路與眼界,使程式設計更有趣味性,簡潔性。
過載運算子總結
過載運算子 一過載運算子的限制 在我們定義了類之後,出現了一些新的資料型別,因此我們要根據資料型別的不同要重新編寫我們的運算子,在c 中大部分的預定義的運算子都可以被過載,但以下運算子不能被過載 sizeof 過載運算子函式可以對運算子做出新的解釋,即定義使用者所需要的各種操作。但運算子過載後,原有...
過載運算子
題目描述 定義乙個矩形類,資料成員包括左下角和右上角座標,定義的成員函式包括必要的建構函式 輸入座標的函式,實現矩形加法,以及計算並輸出矩形面積的函式。要求使用提示中給出的測試函式並不得改動。兩個矩形相加的規則是 決定矩形的對應座標分別相加,如 左下角 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 比較物件...