過載為普通函式(正常情況下都是友元函式)時,引數個數為運算子目數;
過載為成員函式時,引數個數為運算子目數減1.
一般情況下,單目運算子最好過載為類的成員函式;雙目運算子則最好過載為類的友元函式。
什麼情況下成員函式不能解決問題?比如complex c; c+5相當於呼叫c.operator+(5), 可以用;但是5+c就不行了。於是只能過載為普通函式(即友元函式)了。
=、()、、-> 只能過載為成員函式。
前置運算子是一元運算子,後置運算子是二元運算子(多乙個int引數,無實際意義,僅用於區分前後置)。
refref2
拓展:1. 箭頭操作符(成員訪問操作符)的過載 ref4
ref5
箭頭操作符是一元操作符!(雖然可能看起來像二元操作符)
過載箭頭操作符必須返回指向類型別的指標,或者返回定義了自己的箭頭操作符的類型別物件。
以point->action為例,
如果 point 是乙個指標,那麼這就是乙個普通指標的呼叫;(因為只有物件才有成員函式啊,普通指標又不是什麼物件)
如果 point 是定義了 operator-> 操作符的類的乙個物件,則將遞迴應用該操作符。(就是這麼定義的)
詳細參考 ref4 裡的例子。
2. new、delete的過載 ref3
運算子過載總結
過載運算子 一,知識點總結 過載運算子函式可以對運算子做出新的解釋,即定義使用者所需要的各種操作。但運算子過載後,原有的基本語義不變,包括 不改變運算子的優先順序 不改變運算子的結合性 不改變運算子所需要的運算元 不能建立新的運算子 優先順序和結合性主要體現在過載運算子的使用上,而運算元的個數不但體...
c 運算子過載總結
目錄 1.一般運算子過載 2.關係運算子過載 3.邏輯運算子過載 4.單目運算子過載 5.自增減運算子過載 6.位運算子過載 7.賦值運算子過載 8.記憶體運算子過載 9.特殊運算子過載 10.總結c 的一大特性就是過載 overload 通過過載可以把功能相似的幾個函式合為乙個,使得程式更加簡潔 ...
C 運算子過載總結
c 的一大特性就是過載 overload 通過過載可以把功能相似的幾個函式合為乙個,使得程式更加簡潔 高效。在c 中不止函式可以過載,運算子也可以過載。由於一般資料型別間的運算子沒有過載的必要,所以運算子過載主要是物件導向之間的。1.一般運算子過載 在進行物件之間的運算時,程式會呼叫與運算子相對應的...