1. 過載的運算子必須至少有乙個運算元是使用者定義的型別。
2. 不能違反運算子原來的使用規則,例如,不能將求模運算子過載為只使用乙個引數。
3. 不能修改運算子的優先順序
4. 不能建立新的運算子,例如不能定義operator**()
5. 不能過載以下運算子
sizeof //sizeof運算子
. //成員運算子
.* //成員指標運算子
:: //作用域解析運算子
?: //條件運算子
typeid //rtti
const_cast //強制型別轉換
dynamic_cast //強制型別轉換
reinterpret_cast //強制型別轉換
static_cast //強制型別轉換
6. 大多數運算子都可以通過成員或非成員函式進行過載,但以下運算子只能通過成員函式過載
過載的限制
運算子函式的格式如下 operatorop argument list 多數c 運算子都可以通過這樣的方式進行過載。但是還存在著一些限制。過載後的運算子必須至少有乙個運算元是使用者自定義的型別,這將防止使用者為標準型別過載運算子。使用運算子時不能違反運算原來的句法規則。不能創造新的運算子。不能過載下...
過載操作符的限制
與c一樣,c 使用布林表示式短路求值法 short circuit evaluation 這表示一旦確定了布林表示式的真假值,即使還有部分表示式沒有被測試,布林表示式也停止運算。例如 char p if p 0 strlen p 10 不用擔心當p為空時strlen無法正確執行,因為如果p不等於0的...
運算子過載的限制
運算子過載是一種形式的c 多型,其隱藏了運算內部的機理,並強調了實質,這是oop的乙個目標。過載的運算子是左結合的,左運算元為呼叫物件,一般格式如下 返回型別說明符 operator 運算子符號 參數列 運算子過載有以下限制 1 過載後的運算子必須至少有乙個運算元是使用者定義的型別,這樣就防止了過載...