C++ 允許在同一作用域中的某個函數和運算符指定多個定義,分別稱爲函數重載和運算符重載。
重載聲明是指一個與之前已經在該作用域內聲明過的函數或方法具有相同名稱的聲明,但是它們的參數列表和定義(實現)不相同。
當您調用一個重載函數或重載運算符時,編譯器通過把您所使用的參數類型與定義中的參數類型進行比較,決定選用最合適的定義。選擇最合適的重載函數或重載運算符的過程,稱爲重載決策。
可重載運算符/不可重載運算符
下面是可重載的運算符列表:
類型 | 符號 |
---|---|
雙目算術運算符 | + (加),-(減),*(乘),/(除),% (取模) |
關係運算符 | ==(等於),!= (不等於),< (小於),> (大於>,<=(小於等於),>=(大於等於) |
邏輯運算符 | ||(邏輯或),&&(邏輯與),!(邏輯非) |
單目運算符 | + (正),-(負),*(指針),&(取地址) |
自增自減運算符 | ++(自增),–(自減) |
位運算符 | | (按位或),& (按位與),~(按位取反),^(按位異或),,<< (左移),>>(右移) |
賦值運算符 | =, +=, -=, *=, /= , % = , &=, |=, ^=, <<=, >>= |
空間申請與釋放 | new, delete, new[ ] , delete[] |
其他運算符 | ()(函數調用),->(成員訪問),->*(成員指針訪問),,(逗號), |
下面是不可重載的運算符列表:
類型 | 符號 |
---|---|
成員訪問運算符 | . |
成員指針訪問運算符 | ., -> |
域運算符 | :: |
長度運算符 | sizeof |
條件運算符 | ?: |
預處理符號 | # |
運算符重載實例
序號 | 運算符和實例 |
---|---|
1 | 一元運算符重載 |
2 | 二元運算符重載 |
3 | 類成員訪問運算符 -> 重載 |
4 | 輸入/輸出運算符重載 |
5 | 關係運算符重載 |
6 | 函數調用運算符 () 重載 |
7 | ++ 和 – 運算符重載 |
8 | 賦值運算符重載 |
9 | 下標運算符 [] 重載 |