004過載賦值運算子實現預設深拷貝操作

2021-09-23 08:15:17 字數 590 閱讀 6972

/*

*c++編譯器至少給乙個類新增4個函式

1. 預設建構函式(無參,函式體為空)

2. 預設析構函式(無參,函式體為空)

3. 預設拷貝建構函式,對屬性進行值拷貝

4. 賦值運算子 operator=, 對屬性進行值拷貝

如果類中有屬性指向堆區,做賦值操作時也會出現深淺拷貝問題

*///過載=運算子實現深拷貝

#include#includeusing namespace std;

class person

//過載=運算子

person&operator=(person&p)

//編譯器提供的預設是淺拷貝

//m_age = p.m_age;

//提供深拷貝,

m_age = new int(*p.m_age);

//返回本身

return *this;

} ~person() }

int *m_age;//年齡的指標

};int main(void)

//不提供深拷貝當程式關閉的時候會3釋放三次記憶體宕機

35 過載自增運算子

編譯器看到 a 前置 它就呼叫operator a 當編譯器看到a 後置 它就會去呼叫operator a,int include using namespace std class data void showdata void 成員函式 過載後置 ob1 先使用 後加 編譯器 預設識別 oper...

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

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

過載賦值運算子

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