c 運算子過載 常用運算子 知識點

2021-10-07 14:20:48 字數 3168 閱讀 8338

先給出一段**,具體函式內容會在下面給出:

class

person

bool

operator

==(person &p)

;//過載"=="

bool

operator

!=(person &p)

;//過載"!="

person &

operator++(

);//前置++過載

person operator++(

int)

;//後置++過載

friend ostream &

operator

<<

(ostream &out,

const person p)

;//過載"<<"

friend istream &

operator

>>

(istream &in, person &p)

;//過載">>"

intget_age()

;private

: string m_name;

int m_age;

};

過載運算子是具有特殊名字的函式。
關鍵字operator和其後要定義的運算符號共同組成;同樣也包含返回型別、引數列表以及函式體。
注意事項:

輸入輸出運算子必須是非成員函式。

輸入運算子必須處理輸入可能失敗的情況。

輸入運算子過載函式的引數必須加引用。

"<<"過載:

ostream &

operator

<<

(ostream &out,

const person p)

">>"過載:

istream &

operator

>>

(istream &in, person &p)

"=="過載

bool person::

operator

==(person &p)

"!="過載

bool person::

operator

!=(person &p)

注意事項:

賦值運算子必須定義為成員函式。

過載的賦值運算子必須先釋放當前記憶體空間,再建立一片新空間。

class &class::

operator

=(class &obj)

可以是非成員函式也可以是成員函式

class &class::

operator+=

(class &obj)..

.

注意事項:

下標運算子必須是成員函式。

最好同時定義下標運算子的常量版本和非常量版本,當作用域乙個常量物件時,下標運算子返回常量引用以確保我們不會給返回的物件賦值。

注意事項:

應同時定義前置版本和後置版本。

為了區分前置和後置,後置版本接受乙個額外的(不被使用)int型別的實參。

前置運算子應該返回遞增或遞減後物件的引用。

後置運算子應該返回遞增或遞減後物件的原值。

前置"++"過載

person &person::

operator++(

)

後置"++"過載

person person::

operator++(

int)

#include

using

namespace std;

#include

class

person

bool

operator

==(person &p)

;bool

operator

!=(person &p)

; person &

operator++(

);//前置++過載

person operator++(

int)

;//後置++過載

friend ostream &

operator

<<

(ostream &out,

const person p)

;friend istream &

operator

>>

(istream &in, person &p)

;int

get_age()

;private

: string m_name;

int m_age;};

int person::

get_age()

bool person::

operator

==(person &p)

bool person::

operator

!=(person &p)

ostream &

operator

<<

(ostream &out,

const person p)

istream &

operator

>>

(istream &in, person &p)

person &person::

operator++(

)person person::

operator++(

int)

intmain()

else

cout <<++(

++p1)

<< endl;

cout << p2++

<< endl;

cout << p2 << endl;

return0;

}

C 關於運算子過載知識點

1 除了類屬關係運算子 成員指標運算子 作用域運算子 sizeof運算子和三目運算子 以外,c 中的所有運算子都可以過載。2 過載運算子限制在c 語言中已有的運算子範圍內的允許過載的運算子之中,不能建立新的運算子。3 運算子過載實質上是函式過載,因此編譯程式對運算子過載的選擇,遵循函式過載的選擇原則...

運算子過載知識點總結

本章學習的運算子的過載,作以下總結 一 從幾個問題來入手 1.什麼是運算子的過載?運算子與類的結合,產生新的含義。2.為什麼要引入運算子過載?作用 為了實現類的多型性 多型是指乙個函式名有多種含義 運算子過載允許c c 的運算子在使用者定義型別 類 上擁有乙個使用者定義的意義。過載的運算子是函式呼叫...

C 運算子過載賦值運算子

自定義類的賦值運算子過載函式的作用與內建賦值運算子的作用類似,但是要要注意的是,它與拷貝建構函式與析構函式一樣,要注意深拷貝淺拷貝的問題,在沒有深拷貝淺拷貝的情況下,如果沒有指定預設的賦值運算子過載函式,那麼系統將會自動提供乙個賦值運算子過載函式。賦值運算子過載函式的定義與其它運算子過載函式的定義是...