過載賦值運算子

2021-06-28 00:59:17 字數 542 閱讀 2801

1.注意過載賦值運算子和,(),->運算子必須定義為類的成員函式。

2.注意:如果程式不提供顯示的賦值運算子則系統會提供乙個預設的賦值運算子。

3.什麼時候過載賦值運算子:當類中含有指標成員時,一般都要重定義類的賦值運算子。4.

過載賦值運算子時應有處理語句m=m的情況。其中m是某乙個類的物件。如果不處理這樣的語句有時會出現問題,具體什麼問題有待調查。可以用this指標來做處理,比如有語句const a & operator(a &j)則可以用if(this==&j) return *this;這樣的語句來處理,即比較當前呼叫賦值運算子函式的物件的位址和被賦值的物件的位址,如果地直相等說明是同乙個物件。

5.過載賦值運算子時應反回乙個物件。因為賦值運算子的左邊是乙個物件,所以過載賦值運算子應反回乙個類的物件,

為了避免不必要的開銷,最好是反回乙個類的物件的引用。

if(this==&j) return*this;

//用this和j的位址來檢查是否是對自身的賦值的情況,如果呼叫賦值運算子函式的位址和被賦值的物件的位址相等,則說明是同乙個物件,就反回當前物件。

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

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

賦值運算子過載

在下面類中實現 class cmystring 為了寫出乙個完整的賦值運算子過載函式,我們要考慮以下幾個問題 一步步解決上述的問題,我們可以編寫出經典的演算法 cmystring cmystring operator const cmystring str return this 考慮到異常安全性的...

賦值運算子過載

c 為了增強 的可讀性引入了運算子過載,運算子過載是具有特殊函式名的函式,也具有其返回值類 型,函式名字以及引數列表,其返回值型別與引數列表與普通的函式類似。函式名字為 關鍵字operator後面接需要過載的運算子符號。注意 函式原型 返回值型別 operator操作符 引數列表 class dat...