一、什麼是運算子過載
所謂過載,就是重新賦予新的含義。函式過載就是對乙個已有的函式賦予新的含義,使之實現新功能,因此,乙個函式名就可以用來代表不同功能的函式,也就是」一名多用」。
又如」<>「也是位移運算子(右移),但在輸入操作中又是與流物件 cin 配合使用的流提取運算子。這就是運算子過載(operator overloading)。c++系統對」<>「進行了過載,使用者在不同的場合下使用它們時,作用是不同 的。對」<>「的過載處理是放在標頭檔案stream中的。因此,如果要在程式中用」<< 「和」>>」作流插入運算子和流提取運算子,必須在本檔案模組中包含標頭檔案stream(當然還應當包括」using namespace std「)。
二、運算子過載的限制
(1)不能過載的運算子:
.
::.*
?:sizeof
總結:帶 . 的 和 sizeof
三、過載運算子的兩種方法
(1)二元運算子
例如1:
//通過類成員函式完成-操作符過載
//函式宣告 complex operator-(complex &c2)
//函式呼叫分析
//用類成員函式實現-運算子過載
complex c4 = c1 - c2;
c4.printcom();
例如2:
//通過全域性函式方法完成+操作符過載
//函式宣告 complex operator+(complex &c1, complex &c2)
//函式呼叫分析
int main()
(2)一元運算子
例如3
//前置++操作符 用全域性函式實現
complex& operator++(complex &c1)
//呼叫方法
++c1 ; //=è需要寫出操作符過載函式原形
c1.printcom();
//運算子過載函式名定義
//首先承認操作符過載是乙個函式 定義函式名èoperator++
//分析函式引數 根據左右運算元的個數,èoperator++(complex &c1)
//分析函式返回值è complex& operator++(complex &c1) 返回它自身
例如4前置—操作符 成員函式實現
complex& operator--()
呼叫方法
--c1;
c1.printcom();
前置—運算子過載函式名定義
例如5 //後置++ 操作符 用全域性函式實現
complex operator++(complex &c1, int)
呼叫方法
c1 ++ ; //先使用 後++
後置++運算子過載函式名定義
complex operator++(complex &c1, int) //函式佔位引數 和 前置++ 相區別
例如6 後置— 操作符 用類成員函式實現
complex operator--(int)
呼叫方法
c1 ++ ; //先使用 後++
後置--運算子過載函式名定義
complex operator--(int) //函式佔位引數 和 前置-- 相區別
(3)前置 和 後置 運算子總結
c++中通過乙個佔位引數來區分前置運算和後置運算
四、友元函式和成員函式的選擇方法:
五、過載賦值運算子 =
結論:
(1) 先釋放舊的記憶體
(2) 返回乙個引用
(3) =操作符 從右向左
#include
using
namespace
std;
class name
//name obj2 = obj1;
//解決方案: 手工的編寫拷貝建構函式 使用深copy
name(const name& obj1)
//obj3 = obj1; // c++編譯器提供的 等號操作 也屬 淺拷貝
name& operator=(name &obj1)
//2 根據obj1分配記憶體大小
this->m_len = obj1.m_len;
this->m_p = new
char [m_len+1];
//把obj1賦值
strcpy(m_p, obj1.m_p);
return *this;
} ~name()
}protected:
private:
char *m_p ;
int m_len;
};//物件析構的時候 出現coredump
void objplaymain()
int main()
test operator+ (const test& obj)
bool
operator&& (const test& obj)
}; // && 從左向右
int main()
學點C 5 運算子過載 索引器 屬性 委託
若要過載某個運算子,可以編寫乙個函式,在其命名運算子之後加上要過載的運算子的符號。例如,可按以下方法過載 運算子 public static complexnumber operator complexnumber a,complexnumber b 索引器public class departme...
C 學習 運算子過載
同函式過載一樣,算數操作符過載能夠帶給我們操作不同資料型別的方法,包括你自己定義的類。我們日常最常用的就是加 減 乘 除,而它們的性質又有些相似。所以,它們的運算子實現方式也有些相似。共有三種實現方式 首先,我們介紹怎樣使用友鄰函式定義操作符過載。看下面的 include class cents 使...
c 學習運算子過載
運算子過載 1 實驗目的 學習掌握重定義與類有關的運算子。把握過載運算子的時機。學習掌握把乙個類物件轉換為另乙個類物件。學習掌握過載為成員與友元的區別及其帶引數的情況。學習掌握值返回與引用返回的區別及應用時機。2 實驗內容 1 生成乙個表示複數的類fs。複數的實部sb和虛部xb作為其資料成員。提供成...