過載運算子 前置 和後置

2021-09-10 07:33:36 字數 791 閱讀 9042

1>為區別前置和後置運算子,需要在後置運算子函式中加引數「int」,雖然這個型別在此除了以示區別之外並不代表任何實際含義;

2>前置返回的是變數的引用,後置返回的是常量。所以++++c合法,而c++++不合法,這一點可以在vc 6.0和dev

c++中採用基本資料型別的++操作來驗證;

3>為什麼不讓c++++也合法呢?如果要實現c++++合法,必須使後置返回變數或變數的引用。c++是先返回c值再+1,所以不可能返回c,那就只能先建立區域性變數來儲存c的初值,然後再返回區域性變數(區域性變數不允許返回引用),但返回了區域性變數之後,如果再連著進行下一次++運算,參與運算的就是這個區域性變數的值了,所以此時c++++其實等效與c++,也就沒有存在的意義了。

#include using namespace std;

class complex

;complex::complex()

complex::complex(int a, int b)

//過載後,呼叫'<<'能夠直接輸出乙個複數形式

ostream &operator<<(ostream &out, const complex &c)

//返回值是complex類的物件,

complex complex::operator++(int) //後置++,不是引用,不能進行連續使用

//返回值是引用complex類的物件

complex &complex::operator++() //前置++,是引用,方便進行連續使用

int main()

過載前置 運算子和後置 運算子

運算子過載的主要目的是為了讓使用者自定義型別物件可以像普通資料型別一樣能夠進行加減乘除,自加自減等操作,非常直觀方便。在這裡總結一下c 的 分前置與後置 運算子的過載。自減運算子同理。關鍵就是如何通知編譯器,讓它知道哪個是前置版本,哪個是後置版本。如何讓編譯器知道是前置還是後置呢?其實很簡單,只要在...

過載運算子

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