運算子過載

2021-10-01 21:40:56 字數 2250 閱讀 4628

加法運算子過載+

乘法運算子與其相似這裡就不舉例子了

加法運算子的例子:

#include

using

namespace std;

class

aint a;};

intmain()

接下來過載左移運算子<<

假如乙個類的物件p,想要用cout<#include

using

namespace std;

class

aint a;

int b;};

intmain()

cout的型別是ostream,由於全域性只能有乙個cout,所以不管是傳參還是返回cout都要用引用;

所以如果想要用cout<

using

namespace std;

class

person

private

:int a;

int b;};

ostream&

operator

<<

(ostream &cout,person p)

intmain()

接下來是++運算子過載

++運算子的目的是當某乙個物件如物件p,使用++p或者p++時物件裡邊的資料成員都會+

1;舉個例子++p:

#include

using

namespace std;

class

person

int&

operator++(

)//想要對裡邊的值進行操作必須用引用,要不然它會建立乙個臨時的物件進行返回,返回的不是你所自加的那個數

private

:int a;};

intmain()

當然後置++

#include

using

namespace std;

class

person

person&

operator++(

int)

//加上int可區分++是前置還是後置

private

:int a;};

ostream&

operator

<<

(ostream& cout,person p)

intmain()

接下來是=運算子過載

#include

using

namespace std;

class

person

person&

operator

=(person &p)

//這裡都要引用,都要對已存在的物件進行操作;

age=

newint

(*p.age)

;//這裡存在和淺拷貝一樣的問題,就是當呼叫析構函式時釋放兩遍相同的記憶體,所以要重新為自己在堆區開闢空間

return

*this

;//返回自身的物件才能進行連等}~

person()

//析構處理在堆區開闢的空間;

}int

*age;

//將在堆區開闢空間給age賦值;};

void

text()

intmain()

bool

operator

==(person& p)

//注意時布林型別;

string name;

int a;};

intmain()

else

cout<<

"他倆不等"

}

函式運算子過載(其實就是小括號過載)

#include

#include

using

namespace std;

class

person};

void

text()

void

text1()

intmain()

由於他的呼叫和函式類似,所以又被稱為仿函式;

運算子過載之過載型別運算子

普通型別 類型別 呼叫對應的只有乙個引數 引數的型別就是這個普通型別 的建構函式 需求 boy boy1 10000 薪資 建構函式boy int boy boy2 rock 姓名 建構函式boy char 普通型別賦值給類型別其實很簡單,就是專門的對這個賦值的型別定義乙個建構函式。編譯器在執行 的...

運算子過載 賦值運算子的過載

有時候希望賦值運算子兩邊的型別可以不匹配,比如,把乙個int型別變數賦值給乙個complex物件,或把乙個 char 型別的字串賦值給乙個字串物件,此時就需要過載賦值運算子 注意 賦值運算子 只能過載為成員函式 賦值運算子過載例項示例 include include using namespace ...

運算子過載

c 中的運算子 1。大多數系統預定義運算子都能過載 不值得過載 不能被過載 2過載不能改變優先順序 不能改變結合性 不能改變運算子所需運算元的個數 過載後,可按這些運算子的表達方式使用 運算子過載的語法 一 通過運算子過載函式進行過載 1。運算子過載函式是成員函式 語法形式 type x opera...