對c 深淺拷貝的剖析

2021-10-24 21:23:58 字數 631 閱讀 1723

對this指標的一些說明:

c++編譯器給每個成員函式增加了乙個隱藏的指標引數,讓 該指標指向當前物件(函式執行時所呼叫函式的那個物件),在函式體中所有成員變數的操作,都是通過該指標去訪問。只不過所有操作對使用者是透明的,即使用者不需要傳遞,編譯器自動完成!

1.this指標的型別是*const,且只能在成員函式內部使用。

2.this指標本質上其實是乙個成員函式的形參,呼叫該成員函式時,會把物件位址當做實參傳入給this指標,所以物件不儲存this

3.this指標是成員函式 第乙個隱藏的指標形參,一般情況是由編譯器通過ecx暫存器自動傳遞的,不需要使用者傳遞

對c++中深淺拷貝的認識:

class

string

~string

()

private:

char*

_str;

}; void test()

int main()

再寫乙個拷貝建構函式給s2開出乙個空間,然後將s1的資料拷貝到s2就行了,問題迎刃而解,這就是深拷貝!

深拷貝不同於淺拷貝,拷貝的時候是實實在在的開闢出了乙個新的空間、兩個指標都指向不同的空間,但這兩塊空間都具有相同的資料,這就不會造成一塊空間釋放兩次的尷尬局面!

C 深淺拷貝

當結構體中沒有指標時,可進行淺拷貝,資料也會從乙個結構體拷貝到另乙個結構體 兩個結構體都存乙份資料 但當結構體中有指標的時候,假如使用使用淺拷貝,會使兩個結構體使用的指標都指向同乙個記憶體位址,在析構的時候會造成記憶體洩漏。深拷貝 需要對含有指標的結構體,使用 new 申請新的記憶體空間去儲存拷貝的...

c 深淺拷貝

對於普通型別的物件來說,它們之間的複製是很簡單的,例如 int a 88 int b a 而類物件與普通物件不同,類物件內部結構一般較為複雜,存在各種成員變數。下面看乙個類物件拷貝的簡單例子。執行程式,螢幕輸出100。從以上 的執行結果可以看出,系統為物件b分配了記憶體並完成了與物件a的複製過程。就...

C 什麼是深淺拷貝,深淺拷貝的區別?

淺拷貝 class string string const string s str s.str string operator const string s 返回引用是為了連續的賦值 return this string 防止野指標的出現 str null char str get void st...