C++中絕大部分的運算符允許重載,具體規定見表10.1。
雙目算術運算符 | + (加),-(減),*(乘),/(除),%?(取模) |
關系運算符 | ==(等于),!= (不等于),< (小于),> (大于>,<=(小于等于),>=(大于等于) |
邏輯運算符 | ||(邏輯或),&&(邏輯與),!(邏輯非) |
單目運算符 | + (正),-(負),*(指針),&(取地址) |
自增自減運算符 | ++(自增),--(自減) |
位運算符 | | (按位或),& (按位與),~(按位取反),^(按位異或),,<<?(左移),>>(右移) |
賦值運算符 | =, +=, -=, *=, /= , % = , &=, |=, ^=, <<=, >>= |
空間申請與釋放 | new, delete, new[ ] , delete[] |
其他運算符 | ()(函數調用),->(成員訪問),->*(成員指針訪問),,(逗號),[](下標) |
不能重載的運算符只有5個:
. ?(成員訪問運算符)
.* ?(成員指針訪問運算符)
:: ?(域運算符)
sizeof ?(長度運算符)
?: ?(條件運算符)
前兩個運算符不能重載是為了保證訪問成員的功能不能被改變,域運算符和sizeof 運算符的運算對象是類型而不是變量或一般表達式,不具備重載的特征。