重載的運算符(有些例外情況)不必是成員函數,但必須至少有一個操作數是用戶定義的類型。
C++對用戶定義的運算符重載的限制:
- 重載後的運算符必須至少有一個操作數是用戶定義的類型,這將防止用戶爲標準類型重載運算符。
- 使用運算符不能違反運算符原來的句法規則。即加法運算不能只有一個操作數等。同樣不能改變運算符的優先級。
- 不能創建新運算符
- 不能重載以下運算符
. : 成員運算符
.* : 成員指針運算符
:: : 作用域解析運算符
?: : 條件運算符
typeid : 一個RTTI運算符
const_cast : 強制類型轉換運算符
dynamic_cast :強制類型轉換運算符
reinterpret_cast :強制類型轉換運算符
static_cast :強制類型轉換運算符
- 下面的運算符只能通過成員函數進行重載
= :賦值運算符
() :函數調用運算符
[] :下標運算符
-> : 通過指針訪問類成員運算符