賦值運算子過載

2021-07-28 13:04:24 字數 518 閱讀 4372

在下面類中實現:

class cmystring

;

為了寫出乙個完整的賦值運算子過載函式,我們要考慮以下幾個問題

一步步解決上述的問題,我們可以編寫出經典的演算法

cmystring& cmystring::operator=(const cmystring& str)

return *this;

}

考慮到異常安全性的解法

在前面的函式中,我們在分配記憶體之前就先釋放掉了例項的m_pdata的記憶體。如果此時記憶體不足導致new char異常,m_pdata將會是乙個空指標,這樣程式容易崩潰。

解決辦法:建立乙個臨時例項,再交換臨時例項和原來的例項

cmystring& cmystring::operator=(const cmystring& str)

return *this;

}

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

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

過載賦值運算子

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

賦值運算子過載

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