《插入運算子
>>提取運算子
上面兩個運算子本來是邏輯左移和邏輯右移,因此這兩個運算子進行了過載。
運算子過載,使運算子能用於類物件;
運算子被過載後,其原有的功能仍然保留,沒有喪失或改變;
運算子過載實際上是函式的過載:
對每個需要過載的運算子定義乙個過載運算子的函式
需要執行被過載的運算子時,系統就自動呼叫該函式,以實現相應運算。
運算子過載的方法:
型別名 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...