C C C 基礎之過載賦值運算子

2022-09-19 16:06:12 字數 1071 閱讀 8243

本文介紹的是c++中的過載運算子,希望對你有幫助,一起來看。

過載賦值運算子

為了解決上面的問題,我們應該寫乙個特殊的賦值運算子函式來處理這類問題。當需要為同乙個類的兩個物件相互賦值時,就可以過載運算子函式。這個方法可以解決類的賦值和指標的釋放。

下面的程式中,類中的賦值函式用new運算子從堆中分配了乙個不同的指標,該指標獲取賦值物件中相應的值,然後拷貝給接受賦值的物件。

在類中過載賦值運算子的格式如下:

void operator = (const date&)

後面我們回加以改進。目前,過載的運算子函式的返回型別為void。它是類總的成員函式,在本程式紅,是date類的成員函式。它的函式名始終是operator =,引數也始終是同乙個類的物件的引用。引數表示的是源物件,即賦值資料的提供者。過載函式的運算子作為目標物件的成員函式來使用。

#include \"iostream.h\"

#include \"string.h\"

class date  

;  date::date(int m, int d, int y)  

;  mo = m; da = d; yr = y;  

if (m != 0)  

else month = 0;  

}   

date::~date()  

void date::display() const

void date::operator=(const date& dt)  

else month = 0;  

}  }  

int main()  

複製**

除了為date類加入了乙個過載運算子函式,這個程式和上面的乙個程式是相同的。賦值運算子函式首先取得所需的資料,然後用delete把原來的month指標所占用的記憶體返還給堆。接著,如果源物件的month指標已經初始化過,就用new運算子為物件重新分配記憶體,並把源物件的month字串拷貝給接受方。

過載的date類賦值運算子函式的第乙個語句比較了源物件的位址和this指標。這個操作取保物件不會自己給自己賦值。

希望通過以上內容對過載運算的介紹,希望能夠給你帶來幫助。

C C C 拷貝構造器,賦值運算子過載

由己存在的物件,建立新物件。也就是說新物件,不由構造器來構造,而是由拷貝構造器來完成。拷貝構造器的格式是固定的。class 類名 class a 規則 1 系統提供預設的拷貝構造器。一經實現,不復存在。2 系統提供的時等位拷貝,也就是所謂的淺淺的拷貝。3 要實現深拷貝,必須要自定義。4 淺拷貝,會導...

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

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

過載賦值運算子

1 注意過載賦值運算子和,運算子必須定義為類的成員函式。2 注意 如果程式不提供顯示的賦值運算子則系統會提供乙個預設的賦值運算子。3 什麼時候過載賦值運算子 當類中含有指標成員時,一般都要重定義類的賦值運算子。4 過載賦值運算子時應有處理語句m m的情況。其中m是某乙個類的物件。如果不處理這樣的語句...