C 運算子過載時,將運算子兩邊物件交換問題

2022-08-16 03:09:13 字數 885 閱讀 2255

在c++進行運算子過載時, 一般來講,運算子兩邊的物件的順序是不能交換的. 比如下面的例子:

#include using

namespace

std;

class

distance

distance(

int f, int

i)

//顯示距離的方法

void

displaydistance()

//過載加運算子( + )

distance operator+ (int

i)

};int

main()

else

return0;

}

在過載加號'+'運算子時, d4 = d1 + 3 是正確的, 而d3 = 3 + d1 提示出錯. 

解決該問題的乙個方法是宣告乙個友元函式. 如下所示:

#include using

namespace

std;

class

distance

distance(

int f, int

i)

//顯示距離的方法

void

displaydistance()

//過載負運算子( - )

distance operator+ (int

i)

friend distance

operator+ (int i, const distance&d)

};int

main()

else

return0;

}

這時便能過通過編譯,順利執行了.

C 運算子過載賦值運算子

自定義類的賦值運算子過載函式的作用與內建賦值運算子的作用類似,但是要要注意的是,它與拷貝建構函式與析構函式一樣,要注意深拷貝淺拷貝的問題,在沒有深拷貝淺拷貝的情況下,如果沒有指定預設的賦值運算子過載函式,那麼系統將會自動提供乙個賦值運算子過載函式。賦值運算子過載函式的定義與其它運算子過載函式的定義是...

C 運算子過載轉換運算子

為什麼需要轉換運算子?大家知道對於內建型別的資料我們可以通過強制轉換符的使用來轉換資料,例如 int 2.1f 自定義類也是型別,那麼自定義類的物件在很多情況下也需要支援此操作,c 提供了轉換運算子過載函式 它使得自定義類物件的強轉換成為可能。轉換運算子的生命方式比較特別,方法如下 operator...

物件 運算子過載

函式解決運算 運算子過載 過載單目運算子 兩個物件的相加的實現 1 函式解決運算 includeusing namespace std 注意事項 1 不允許使用者自定義新的運算子,只能對已有的運算子進行過載 2 不能改變原有的運算子運算元的個數 3 不能改變原有運算子的等級 4 不能改變原有運算子的...