c 運算子過載

2021-10-04 05:54:16 字數 1936 閱讀 2972

運算子過載,就是對已有的運算子重新進行定義,賦予其另一種功能,以適應不同的資料型別

運算子過載的目的:簡化操作 讓已有的運算子 適應適應不同的資料型別。

語法:函式的名字由關鍵字operator及其緊跟的運算子組成

比如:過載+運算子 -->operator+

過載=號運算 -->operator=

注意:過載運算子 不要更改 運算子的本質操作(+是資料的相加 不要過載成相減)

#include

#include

using

namespace std;

class

person

//普通的成員函式

void

printperson

(void)~

person()

cout<<

"析構函式"

<;ostream&

operator

<<

(ostream &out, person &ob)

//out=cout, ob =ob1

intmain

(int argc,

char

*ar**)

#include

#include

using

namespace std;

class

person

person

(char

*name,

int num)

//普通的成員函式

void

printperson

(void)~

person()

cout<<

"析構函式"

<;//全域性函式作為友元 完成運算子過載<<

ostream&

operator

<<

(ostream &out, person &ob)

//out=cout, ob =ob1

//全域性函式作為友元 完成運算子過載+

person operator

+(person &ob1, person &ob2)

//ob1 ob2

return tmp;

}void

test01()

void

test02()

intmain

(int argc,

char

*ar**)

#include

#include

using

namespace std;

class

person

person

(char

*name,

int num)

//成員函式 完成運算子過載 ob1用this代替 ob2用引數ob代替

person operator

+(person &ob)

return tmp;

}//普通的成員函式

void

printperson

(void)~

person()

cout<<

"析構函式"

<;//全域性函式作為友元 完成運算子過載<<

ostream&

operator

<<

(ostream &out, person &ob)

//out=cout, ob =ob1

void

test03()

intmain

(int argc,

char

*ar**)

運算子的第乙個引數 如果是物件 基本用成員函式過載運算子

C 運算子過載 過載特殊運算子

賦值運算子用於同類物件間的相互賦值。賦值運算子只能被過載為類的非靜態成員函式,不能過載為友元函式和普通函式。對於使用者自定義的類而言,如果沒有過載賦值運算子,那麼c 編譯器會為該類提供乙個預設的過載賦值運算子成員函式。預設賦值運算子的工作方式是按位對拷,將等到右邊物件的非靜態成員拷貝給等號左邊的物件...

C 運算子過載賦值運算子

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

C 運算子過載轉換運算子

為什麼需要轉換運算子?大家知道對於內建型別的資料我們可以通過強制轉換符的使用來轉換資料,例如 int 2.1f 自定義類也是型別,那麼自定義類的物件在很多情況下也需要支援此操作,c 提供了轉換運算子過載函式 它使得自定義類物件的強轉換成為可能。轉換運算子的生命方式比較特別,方法如下 operator...