運算子過載是一種形式的c++多型,其隱藏了運算內部的機理,並強調了實質,這是oop的乙個目標。
過載的運算子是左結合的,左運算元為呼叫物件,一般格式如下:
《返回型別說明符》 operator 《運算子符號》(《參數列》)
運算子過載有以下限制:
1、過載後的運算子必須至少有乙個運算元是使用者定義的型別,這樣就防止了過載標準型別。
如:不能將< - >過載為兩個int的差。
2、使用運算子時不能改變原來的句法規則。如:
int x;
%x; // 不能將%過載為使用乙個運算元
3、不能改變修改運算子的優先順序。
4、不能建立新的運算子,
如:不能定義**為求冪
5、不能過載以下運算子:
~:sizeof運算子
~<.>:成員運算子
~<::>:作用域解析運算子
~<?:>:條件運算子
~:乙個rtti運算子
~:強制型別轉換運算子
~:強制型別轉換運算子
~:強制型別轉換運算子
~_cast>:強制型別轉換運算子
6、大多數運算子都可以通過成員或非成員函式進行過載,但下面的運算子只能通過成員函式過載。
~<=>:賦值運算子
~<()>:函式呼叫運算子
~<>:下標運算子
~<->>:通過指標訪問類成員的運算子
運算子過載限制 不能過載的運算子
1.過載後的運算子必須至少有乙個操作符是使用者定義的型別。2.使用運算子不能違反運算子原來的句法規則。3.不能新建運算子 4.不能過載 sizeof const cast,dynamic cast,reinterpret cast,static cast 5.只能通過成員函式過載的運算子 限制說明 ...
運算子過載 賦值運算子的過載
有時候希望賦值運算子兩邊的型別可以不匹配,比如,把乙個int型別變數賦值給乙個complex物件,或把乙個 char 型別的字串賦值給乙個字串物件,此時就需要過載賦值運算子 注意 賦值運算子 只能過載為成員函式 賦值運算子過載例項示例 include include using namespace ...
運算子過載 類的賦值運算子過載
下面介紹類的賦值運算子 1.c 中物件的記憶體分配方式 在c 中,物件的例項在編譯的時候,就需要為其分配記憶體大小,因此,系統都是在stack上為其分配記憶體的。這一點和c 完全不同!千 萬記住 在c 中,所有類都是reference type,要建立類的實體,必須通過new在heap上為其分配空間...