運算子過載

2021-08-02 04:37:43 字數 778 閱讀 9571

《插入運算子

>>提取運算子

上面兩個運算子本來是邏輯左移和邏輯右移,因此這兩個運算子進行了過載。

運算子過載,使運算子能用於類物件;

運算子被過載後,其原有的功能仍然保留,沒有喪失或改變;

運算子過載實際上是函式的過載:

對每個需要過載的運算子定義乙個過載運算子的函式

需要執行被過載的運算子時,系統就自動呼叫該函式,以實現相應運算。

運算子過載的方法:

型別名 operator運算子名稱 (形參表列),比如:

complex complex::operator+(complex &c2)

只不過對於上面的實現來說,如果宣告為友元函式還好,這樣的話這個函式可以訪問complex類的私有資料成員

real和imag;但是如果是一般的函式,那麼就需要在complex類中定義public的set或者get函式,來對私有資料成員進行操作。

對於上面的對『+』的運算子過載來說,可以通過

complex c3=c1+c2;//需要注意的是這裡呼叫了預設複製建構函式。通過淺複製將第一種方式中的c的值複製給了c3.然後第一種方式中的區域性變數c就會被釋放掉。

或者c3=c1.operator+(c2);

來使用,這兩種是等價的。需要注意的是對於前一種,當前物件一定是左邊的這個,因為在後一種

中可以看到這其實就是當前物件呼叫了成員函式

運算子過載之過載型別運算子

普通型別 類型別 呼叫對應的只有乙個引數 引數的型別就是這個普通型別 的建構函式 需求 boy boy1 10000 薪資 建構函式boy int boy boy2 rock 姓名 建構函式boy char 普通型別賦值給類型別其實很簡單,就是專門的對這個賦值的型別定義乙個建構函式。編譯器在執行 的...

運算子過載 賦值運算子的過載

有時候希望賦值運算子兩邊的型別可以不匹配,比如,把乙個int型別變數賦值給乙個complex物件,或把乙個 char 型別的字串賦值給乙個字串物件,此時就需要過載賦值運算子 注意 賦值運算子 只能過載為成員函式 賦值運算子過載例項示例 include include using namespace ...

運算子過載

c 中的運算子 1。大多數系統預定義運算子都能過載 不值得過載 不能被過載 2過載不能改變優先順序 不能改變結合性 不能改變運算子所需運算元的個數 過載後,可按這些運算子的表達方式使用 運算子過載的語法 一 通過運算子過載函式進行過載 1。運算子過載函式是成員函式 語法形式 type x opera...