使用拷貝建構函式的理由和作用 整理

2021-07-26 20:45:14 字數 344 閱讀 8770

因為在系統的學習c++之前,自己寫了一些小玩意,雖然沒有寫拷貝建構函式,但是也沒有報錯。等到真正學習到的時候,就非常疑惑,為什麼要使用拷貝建構函式呢?不寫不是也可以嗎?(⊙﹏⊙)b

然後,不久之後我就跪了【後來才知道是因為類裡含有指標變數】

因為如果不寫拷貝建構函式,系統就只會呼叫預設建構函式,然而預設建構函式是一種淺拷貝。相當於只對指標進行了拷貝(位拷貝),而有些時候我們卻需要拷貝整個建構函式包括指向的記憶體,這種拷貝被稱為深拷貝(值拷貝)。

所以為了達成深拷貝的目的,自己手寫拷貝建構函式是非常必要的。

下面由淺入深的推薦三個部落格的內容。

超級傳送門:

1 2

3

拷貝建構函式的作用

拷貝建構函式首先是乙個建構函式,它呼叫的時候產生乙個物件,是通過引數傳進來的那個物件來初始化,產生的物件。operator 是把乙個物件賦值給乙個原有的物件,所以如果原來的物件中有記憶體分配要先把記憶體釋放掉,而且還要檢查一下兩個物件是不是同乙個物件,如果是的話就不做任何操作。還要注意的是拷貝建構函...

拷貝建構函式的作用

拷貝建構函式首先是乙個建構函式,它呼叫的時候產生乙個物件,是通過引數傳進來的那個物件來初始化,產生的物件。operator 是把乙個物件賦值給乙個原有的物件,所以如果原來的物件中有記憶體分配要先把記憶體釋放掉,而且還要檢查一下兩個物件是不是同乙個物件,如果是的話就不做任何操作。還要注意的是拷貝建構函...

建構函式和拷貝建構函式

建構函式 簡單地說建構函式是類函式,函式名與類名完全相同,無返回值 建構函式屬於類的成員函式,除了具有一般成員函式的特點外,還具有自己的特點 1 是類的乙個特殊的成員函式,函式名與類名相同 2 訪問屬性應該是public 3 功能是初始化物件,在建構函式中一般不作初始化以外的事情 4 可以在類內定義...