[]
是下標運算符,()
是函數調用運算符。自增自減運算符的前置和後置形式都可以重載。長度運算符sizeof
、條件運算符: ?
、成員選擇符.
、對象選擇符.*
和域解析運算符::
不能被重載。+
號和*
號,並且 c1、c2、c3、c4 都是 complex 類的對象,那麼下面的語句:
c4 = c1 + c2 * c3;
等價於:c4 = c1 + ( c2 * c3 );
乘法的優先級仍然高於加法,並且它們仍然是二元運算符。~
號右邊只有一個操作數,+
號總是出現在兩個操作數之間,重載後也必須如此。complex operator+(const complex & A) const;
當執行:c3 = c1 + c2;
會被轉換為:c3 = c1.operator+(c2);
通過 this 指針隱式的訪問 c1 的成員變量。int operator + (int a,int b){ return (a-b); }
+
號原來是對兩個數相加,現在企圖通過重載使它的作用改為兩個數相減, 如果允許這樣重載的話,那麼表達式4+3
的結果是 7 還是 1 呢?顯然,這是絕對禁止的。complex operator+(int a, complex &c){ return complex(a+c.real, c.imag); }它的作用是使一個整數和一個復數相加。
+
號,並在 complex 類中將運算符重載函數聲明為友元函數,因為該函數使用到了 complex 類的 m_real 和 m_imag 兩個成員變量,它們都是 private 屬性的,默認不能在類的外部訪問。->
、下標運算符[ ]
、函數調用運算符( )
、賦值運算符=
只能以成員函數的形式重載。