運算子過載 , , ,

2021-10-02 23:37:19 字數 1136 閱讀 8100

運算子過載的原因:雖然類也是一種資料型別,但是用它定義了物件之後,c++編譯器預設是不知道該對他如何進行計算的eg:c1(1,2);c2(3,4) c1,c2是同一種類的兩個物件,但是c++編譯器並不會去計算c1+c2,他並不知道該如何去進行計算。所以就需要利用運算子過載機制,讓自定義資料型別,有機會進行運算子操作。

類的型別 operator+(引數1,引數2)引數1和引數2一般也都是類的型別的 表示過載運算子 運算子過載的本質是乙個函式,當定義了運算子過載之後,如果後面出現了+,則編譯器就會根據+前後的變數型別去找有沒有關於這種變數相加的函式。

運算子過載的限制 . :: . ?: sizeof* 這五個運算子不能進行運算子過載

定義運算子過載的步驟

a) 要承認運算子過載是乙個函式,寫出函式的名稱

b) 根據運算元寫出函式引數

c) 根據業務完善返回值:即看最後返回的是乙個函式還是乙個引用,如果是乙個引用則注意operator 前面加&。

一元運算子的過載:c++、c–、++c、–c

class complex

// 用成員函式方法實現-

complex operator-(complex &d1)

//用成員函式方法實現前置--

complex operator--()

//用成員函式實現後置--

complex operator--(int)

void printt() };

// 通過定義乙個全域性函式的方法來實現類的運算

complex myadd(complex &a,complex &b)

//通過全域性函式操作符過載來實現+

//返回值是元素

complex operator+(complex &a,complex &b)

//通過定義全域性函式來實現運算子過載前置++

//返回值是引用(引數本身)就這樣定義&

complex& operator++(complex &a)

//通過全域性函式操作符過載來實現後置++

//定義的時候就不能像上面那樣定義,得有區別,否則不是函式過載

complex operator++(complex &a,int )

void main()

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

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

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

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

運算子過載

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