C String深淺拷貝問題

2021-07-14 09:20:34 字數 1084 閱讀 8173

1.淺拷貝:

//淺拷貝

class string

//拷貝構造

string(const string& str)//淺拷貝--s1和s2同時會指向同一塊空間。

2.深拷貝

//傳統寫法

class string

//帶預設引數更好

string(char* str= "")

:_str(new char[strlen(str) + 1])

string(const string& s)

:_str(new char[strlen(s._str) + 1])

string& operator=(const string&s)

return *this;

} ~string() }

private:

char* _str;

};void teststring1()

現**法:

class string

string(const string& s)//拷貝構造

:_str(null)

string& operator=(string s)//注意沒有&,現**法這裡可以建立臨時物件

深淺拷貝問題 拷貝建構函式

深拷貝 在堆區重新申請空間,進行拷貝操作 淺拷貝 簡單的複製拷貝操作 class person person int age person int m age void test 當引數中有堆區引數,改造之後 class person person int age,int height person...

陣列的深淺拷貝問題

陣列的直接賦值屬於陣列的淺拷貝,js 儲存物件都是存記憶體位址的,所以淺拷貝會導致新陣列和舊陣列共用同一塊記憶體位址,其中乙個陣列變化,另乙個陣列也會相應的變化。陣列內部不含有引用型別,使用 slice concat 和 assign 方法都屬於陣列的深拷貝,乙個陣列變化,另乙個陣列不受影響。let...

js深淺拷貝的問題

例 1 let a let b a console.log b.num 1 a.num 2 console.log b.num 2 b.num 3 console.log a.num 3可以看出物件間的賦值會相互影響,因為他們是引用型別,所有的值都存在記憶體的乙個區域裡,物件通過指標指向去呼叫,一旦...