運算子過載的限制

2021-07-29 19:44:41 字數 750 閱讀 8999

運算子過載是一種形式的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上為其分配空間...