因為在系統的學習c++之前,自己寫了一些小玩意,雖然沒有寫拷貝建構函式,但是也沒有報錯。等到真正學習到的時候,就非常疑惑,為什麼要使用拷貝建構函式呢?不寫不是也可以嗎?(⊙﹏⊙)b
然後,不久之後我就跪了【後來才知道是因為類裡含有指標變數】
因為如果不寫拷貝建構函式,系統就只會呼叫預設建構函式,然而預設建構函式是一種淺拷貝。相當於只對指標進行了拷貝(位拷貝),而有些時候我們卻需要拷貝整個建構函式包括指向的記憶體,這種拷貝被稱為深拷貝(值拷貝)。
所以為了達成深拷貝的目的,自己手寫拷貝建構函式是非常必要的。
下面由淺入深的推薦三個部落格的內容。
超級傳送門:
1 2
3
拷貝建構函式的作用
拷貝建構函式首先是乙個建構函式,它呼叫的時候產生乙個物件,是通過引數傳進來的那個物件來初始化,產生的物件。operator 是把乙個物件賦值給乙個原有的物件,所以如果原來的物件中有記憶體分配要先把記憶體釋放掉,而且還要檢查一下兩個物件是不是同乙個物件,如果是的話就不做任何操作。還要注意的是拷貝建構函...
拷貝建構函式的作用
拷貝建構函式首先是乙個建構函式,它呼叫的時候產生乙個物件,是通過引數傳進來的那個物件來初始化,產生的物件。operator 是把乙個物件賦值給乙個原有的物件,所以如果原來的物件中有記憶體分配要先把記憶體釋放掉,而且還要檢查一下兩個物件是不是同乙個物件,如果是的話就不做任何操作。還要注意的是拷貝建構函...
建構函式和拷貝建構函式
建構函式 簡單地說建構函式是類函式,函式名與類名完全相同,無返回值 建構函式屬於類的成員函式,除了具有一般成員函式的特點外,還具有自己的特點 1 是類的乙個特殊的成員函式,函式名與類名相同 2 訪問屬性應該是public 3 功能是初始化物件,在建構函式中一般不作初始化以外的事情 4 可以在類內定義...