學習c 5 運算子過載

2021-08-21 20:51:29 字數 2984 閱讀 3907

一、什麼是運算子過載

所謂過載,就是重新賦予新的含義。函式過載就是對乙個已有的函式賦予新的含義,使之實現新功能,因此,乙個函式名就可以用來代表不同功能的函式,也就是」一名多用」。

又如」<>「也是位移運算子(右移),但在輸入操作中又是與流物件 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作為其資料成員。提供成...