過載 運算子實現深拷貝

2021-08-22 12:05:24 字數 743 閱讀 5623

1.前面已經敘述過淺拷貝的問題,當類成員含有指標時,可以通過顯示編寫拷貝建構函式的方法,實現用乙個類初始化另乙個類的深拷貝。

2.但是如果是賦值運算,即例子中的 obj2 = obj1,則不會呼叫拷貝建構函式,這個時候需要通過過載 = 運算子的方式實現深拷貝,

步驟已經在**注釋中提出。

#include "iostream"

using namespace std;

class location

/* location(const location &obj) //深拷貝 拷貝建構函式 顯示編寫

*/void print()

location & operator=(location &obj1) // 過載= 運算子 ,實現深拷貝。

//2. 按照obj1的長度給obj2分配空間

this->m_p = new char[obj1.m_len + 1];

//3. 將obj1內容拷貝給obj2

strcpy(this->m_p, obj1.m_p);

//4. 為了支援鏈式程式設計,返回引用, 因為=操作符的結合順序是從右向左的

return *this;

}private:

char *m_p;

int m_len;

};void main()

過載運算子,拷貝賦值運算子

一 過載運算子 在c語言當中遇到有很多的運算子,如 等等。如果我們用 對兩個物件進行判斷是否相等,系統就不樂意了,它不知道怎麼樣去判斷兩個物件是否相等?比如,我定義了乙個類,class a a obj1 a obj2 if obj1 obj2 錯誤,系統判斷不了 原因分析 系統遇到兩個物件之間的判斷...

過載運算子

題目描述 定義乙個矩形類,資料成員包括左下角和右上角座標,定義的成員函式包括必要的建構函式 輸入座標的函式,實現矩形加法,以及計算並輸出矩形面積的函式。要求使用提示中給出的測試函式並不得改動。兩個矩形相加的規則是 決定矩形的對應座標分別相加,如 左下角 1,2 右上角 3,4 的矩形,與 左下角 2...

過載運算子

include include using namespace std class test test const int a v a test const test t1 v t1.v 以下過載小於號 比較兩個物件的大小 bool operator const test t1 const 比較物件...