運算子的過載

2021-08-04 14:24:07 字數 1687 閱讀 2977

運算子過載實質上是對已有的運算子賦予多重含義,擴充套件c++中提供的運算子的適用範圍,以用於類所表示表示得抽象資料型別

返回值型別 operator 運算子 (形參表)
在程式編譯時,把運算子的表示式轉換為對運算子函式的呼叫。把運算子的運算元,作為運算子函式的引數進行傳遞。當運算子發生過載時,根據實參的型別決定呼叫對應的運算子函式。

運算子可以被過載為普通函式,也可以被定義為類的成員函式。

過載為普通函式

過載為普通函式時,引數個數為運算子目數

#include 

using

namespace

std;

class complex

};complex operator + (const complex &a,const complex &b)

int main()

過載為成員函式

過載為成員函式時,引數個數為運算子目數減一

賦值運算子兩邊的型別可以不匹配

當遇到以下情況時,需要過載賦值運算子

把乙個int型別的變數賦值給乙個complex物件

把乙個char*型別的字串賦值給乙個字串物件

對於賦值運算子,只能把它過載為成員函式

例子:

編寫乙個長度可變的字串類string

在該類中包含乙個char*型別的成員變數,指向動態分配的儲存空間。該儲存空間用於存放以』\0』結尾的字串

#include 

#include

using

namespace

std;

class string

; const

char * c_str();

char *operator=(const

char *s);

~string();

};char *string::operator=(const

char *s)

else

str=null;

return str;

}string::~string()

int main()

cout實在iostream中定義的,ostream類的物件。

「<<」在iostream中對」<<」進行了過載。

例子

#include 

#include

#include

using

namespace

std;

class complex

; friend ostream &operator

<<(ostream &os,const complex &c);

friend istream &operator>>(istream &is,const complex &c);

};ostream &operator

<<(ostream &os,const complex &c)

istream &operator>>(istream &is,const complex &c)

int main()

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

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

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

下面介紹類的賦值運算子 1.c 中物件的記憶體分配方式 在c 中,物件的例項在編譯的時候,就需要為其分配記憶體大小,因此,系統都是在stack上為其分配記憶體的。這一點和c 完全不同!千 萬記住 在c 中,所有類都是reference type,要建立類的實體,必須通過new在heap上為其分配空間...

運算子過載限制 不能過載的運算子

1.過載後的運算子必須至少有乙個操作符是使用者定義的型別。2.使用運算子不能違反運算子原來的句法規則。3.不能新建運算子 4.不能過載 sizeof const cast,dynamic cast,reinterpret cast,static cast 5.只能通過成員函式過載的運算子 限制說明 ...