c 中的拷貝建構函式的問題,c 拷貝建構函式的問題

2021-08-09 07:05:24 字數 1491 閱讀 8243

1樓:

拷貝建構函式多被用來實現類物件的深拷貝。

例如:class a

}不定義拷貝建構函式時,你如果對兩個物件賦值,就會是淺拷貝,即:簡單的成員變數相等。

a a,b;

a=b;

則,相當於作了a.p=b.p,a,b的p指標指向了同一個地址,但是資料並沒有拷貝一份,這叫做淺拷貝。

所以定義拷貝建構函式:

a(a& a)

然後再作a=b或者a a(b),作的就是上面函式了,p就有a.p,b.p兩個資料拷貝,不至於在釋放時一個空間被釋放兩次。

拷貝建構函式在大多數情況下就用來做這種事。

所以如果沒有指標變數,一般就不需要自己定義拷貝建構函式。因為系統預設的拷貝建構函式可以實現淺拷貝。而一般常量(只要不是指標),淺拷貝和深拷貝效果一樣。

2樓:

拷貝建構函式是用來複制相同型別物件的,當用一個已經初始化過了的自定義類型別物件去初始化另一個新構造的物件的時候,拷貝建構函式就會被自動呼叫。

比如你有同一個型別的兩個物件a,b,那麼:

a = b;

就會用到你的拷貝建構函式來將物件b複製到物件a至於連結串列,建議你去讀一下資料結構的書吧

c++拷貝建構函式的問題

3樓:匿名使用者

你原來的程式就有些小問題,幫你也改了一下。**在下面。

#include

#include

using namespace std;

class location

; //建構函式1

location::location(int a ,int b)

double location::distance(location & loc1)

location::~location()

class rectangle

;rectangle::rectangle(int a,int b, int len,int wid)

rectangle::~rectangle()

int main()

4樓:匿名使用者

location 的拷貝建構函式

location( const location& loc)

5樓:匿名使用者

拷貝建構函式顧名思義就是有兩個特點:1是建構函式,2該函式有一個同型別的引數,函式的功能就是將該引數的內容拷貝到本身。

通常在一個類(結構)中有指標成員的時候需要定義拷貝建構函式,向上邊的 location,可以不需要定義。

定義: location( const location& loc)實現:location( const location& loc)

c 拷貝建構函式問題

從c 的角度說,引用就是個物件別名,當外部物件 實參 傳入函式時,為物件取了個別名 形參 沒有做記憶體分配工作,因而也沒做物件複製工作,所以引用呼叫函式效率最高。而實質上引用其實傳入的是地址 注意別和傳遞指標變數混淆 只是在函式體內將該地址按物件來操作,把他看做函式內定義的一個物件。請參考 incl...

C 拷貝建構函式

person p1 randy person p2 p1 這兩個語句在作怪.1 person p1 randy 執行時呼叫person char pn 此建構函式,分配空間給p1,並完成字串的拷貝.至此p1已經不再是空了.p1.pname null 2 person p2 p1 語句執行時呼叫per...

C中無參建構函式的使用問題,C 中通過無參建構函式來呼叫有參建構函式有什麼意義啊?

原因有二 第一 每個類裡面都有一個預設的無參的建構函式 這個是有條件的 如果你不手動新增有參的建構函式,則編譯時會自動新增一個無參建構函式,但是如果你手動新增了一個有參的建構函式,這個 預設的無參建構函式 就不會自動新增,這時候如果你還想呼叫無參的建構函式,只能手動寫一個無參的建構函式,第二 預設的...