#define _crt_secure_no_warnings
#include"iostream"
using namespace std;
/* 如果要考慮深拷貝問題,必須寫拷貝建構函式和過載=操作符函式
深拷貝原則:
1.判斷原記憶體空間是否為空,不為空則釋放掉
2.分配新的記憶體空間
3.拷貝
呼叫拷貝建構函式: 用物件初始化(定義的同時賦值)另乙個物件時
呼叫過載=操作符函式: 用乙個物件賦值給另乙個物件(可能已經初始化,預設或者有參建構函式)時,
*/class test08
test08(char* name)
test08(const test08& obj)
len = obj.len;
name = (char*)malloc(sizeof(char)*(len + 1));//深拷貝:手動分配記憶體
strcpy(name, obj.name);
cout << "拷貝建構函式" << endl;
} ~test08()
}public:
test08& operator=(const test08& obj)
len = obj.len;
name = (char*)malloc(sizeof(char)*(len + 1));
strcpy(name, obj.name);
cout << "過載=操作符" << endl;
return *this;
} void printt()
protected:
private:
char* name;
int len;
};void objectshow08()
int main()
複製建構函式和賦值操作符 深拷貝,淺拷貝
首先,大家要知道,c 類有以下這些極為重要的函式 一 複製建構函式。二 賦值函式。我們先來講複製建構函式。什麼是複製建構函式呢?比如,我們可以寫下這樣的 string test1 test2 這是進行初始化。我們知道,初始化物件要用建構函式。可這兒呢?按理說,應該有宣告為這樣的建構函式 string...
C 中的拷貝建構函式和賦值操作符過載
在c 中,當乙個類為 空 時,裡面真的為空嗎?不是的,裡面有四個函式。分別是建構函式,析構函式,拷貝建構函式,過載賦值操作符。class test 等價於class test 拷貝建構函式和過載賦值操作符有什麼區別?test t1 test t2 t1 等價於test t2 t1,此時呼叫拷貝建構函...
C 中的賦值操作符過載和拷貝建構函式
1,關於賦值的疑問 1,什麼時候需要過載賦值操作符?2,編譯器是否提供預設的賦值操作符?2,關於賦值的疑問 1,編譯器為每個類預設過載了賦值操作符 1,意味著同型別的類物件可以相互賦值 2,預設的賦值操作符僅完成淺拷貝 3,當需要進行深拷貝時必須過載賦值操作符 1,和拷貝建構函式相同 4,賦值操作符...