一 概念
1為什麼會用運算子過載機制
用複數類舉例/
/complex c3 =c1 + c2;
//原因 complex是使用者自定義型別,編譯器根本不知道如何進行加減
//編譯器給提供了一種機制,讓使用者自己去完成,自定義型別的加減操作。。。。。
//這個機制就是運算子過載機制
2 運算子過載的本質是乙個函式全域性函式、類成員函式方法實現運算子過載步驟
1)要承認操作符過載是乙個函式,寫出函式名稱operator+ ()
2)根據運算元,寫出函式引數
3)根據業務,完善函式返回值(看函式是返回引用 還是指標 元素),及實現函式業務
void
main()
//4 把complex類變成私有屬性
//友元函式的應用場景
//friend complex operator+(complex &c1, complex &c2);
cout<<
"hello..."
<
system
("pause");
return
;}
二 運算子過載的限制
三 運算子過載程式設計基礎
例如://全域性函式(友元函式) 完成 +操作符 過載
complex operator+(complex &c1, complex&c2)
//類成員函式 完成 -操作符 過載
complex operator-(complex &c2)
1. 運算子過載的兩種方法
2. 二元運算子過載
例如1:
//通過類成員函式完成-操作符過載
//函式宣告 complex operator-(complex &c2)
//函式呼叫分析
//用類成員函式實現-運算子過載
complex c4 = c1 - c2;
c4.printcom();
例如2:
//通過全域性函式方法完成+操作符過載
//函式宣告 complex operator+(complex&c1, complex &c2)
//函式呼叫分析
int main()
//呼叫方法
++c1 ; //需要寫出操作符過載函式原形
c1.printcom();
//運算子過載函式名定義//首先承認操作符過載是乙個函式
定義函式名operator++
//分析函式引數
根據左右運算元的個數,operator++(complex &c1)
//分析函式返回值complex& operator++(complex &c1) 返回它自身
例如4前置—操作符 成員函式實現
complex& operator--()
呼叫方法
c1 ++ ; //先使用 後++
後置++運算子過載函式名定義
complex operator++(complex &c1, int) //函式佔位引數和 前置++ 相區別
例如6
後置— 操作符
用類成員函式實現
complex operator--(int)
呼叫方法
c1 ++ ; //先使用 後++
後置–運算子過載函式名定義
complex operator--(int) //函式佔位引數 和 前置-- 相區別
4. 友元函式實現操作符過載的應用場景1)友元函式和成員函式選擇方法
ø 當無法修改左運算元的類時,使用全域性函式進行過載
ø =, , ()和->操作符只能通過成員函式進行過載
2)用友元函式 過載 << >>操作符
ø istream 和 ostream 是 c++ 的預定義流類
ø cin 是 istream 的物件,cout 是 ostream 的物件
ø 運算子 << 由ostream 過載為插入操作,用於輸出基本型別資料
ø 運算子 >> 由 istream 過載為提取操作,用於輸入基本型別資料
ø 用友員函式過載 << 和 >> ,輸出和輸入使用者自定義的資料型別
a)用全域性函式方法實現 << 操作符
ostream& operator<
//2 根據obj1分配記憶體大小
this->m_len= obj1.m_len;
this->m_p= new char [m_len+1];
//3把obj1賦值給obj3
strcpy(m_p,obj1.m_p);
return *this;
運算子過載之過載型別運算子
普通型別 類型別 呼叫對應的只有乙個引數 引數的型別就是這個普通型別 的建構函式 需求 boy boy1 10000 薪資 建構函式boy int boy boy2 rock 姓名 建構函式boy char 普通型別賦值給類型別其實很簡單,就是專門的對這個賦值的型別定義乙個建構函式。編譯器在執行 的...
運算子過載 賦值運算子的過載
有時候希望賦值運算子兩邊的型別可以不匹配,比如,把乙個int型別變數賦值給乙個complex物件,或把乙個 char 型別的字串賦值給乙個字串物件,此時就需要過載賦值運算子 注意 賦值運算子 只能過載為成員函式 賦值運算子過載例項示例 include include using namespace ...
運算子過載
c 中的運算子 1。大多數系統預定義運算子都能過載 不值得過載 不能被過載 2過載不能改變優先順序 不能改變結合性 不能改變運算子所需運算元的個數 過載後,可按這些運算子的表達方式使用 運算子過載的語法 一 通過運算子過載函式進行過載 1。運算子過載函式是成員函式 語法形式 type x opera...