拷貝建構函式與析構函式的簡單解析

2021-07-23 14:26:37 字數 625 閱讀 7122

顧名思義,拷貝建構函式就是對建構函式的再一次拷貝,用乙個由建構函式已經建立出來的物件建立乙個新的物件。所以,拷貝建構函式的引數就只有乙個,是對本類的型別物件的引用(常用const進行修飾)。

在這裡,可能有人會問為什麼為什麼不是直接呼叫,而是使用引用。如果你直接呼叫,那麼物件會使用建構函式再建立乙個臨時變數,而臨時變數又會建立變數,這樣就會導致死遞迴。

另外,在這裡我要強調拷貝建構函式需要注意的地方:

1、拷貝建構函式只有乙個引數,而且該引數是對本類型別物件的引用;

2、是特殊的建構函式,建立物件時使用已經建立的物件對其進行初始化;

3、在沒有顯示定義時,編譯器會自動生成乙個預設拷貝建構函式,預設拷貝建構函式會將原物件中的內容拷到建立的物件中。

析構函式:

這個函式剛好與建構函式相反,在物件銷毀時由系統自動呼叫,完成類的一些資源清理和汕尾工作(並不是刪除物件)。另外,析構函式無引數,無返回值。

在這裡,強調一下,在未顯示定義的情況下系統同樣會生成乙個預設的析構函式,但是這個析構函式什麼都不幹,在malloc開闢空間後,預設的析構函式就會導致開闢的空間無法釋放,造成記憶體洩漏。

class date

;

建構函式 拷貝建構函式 析構函式

1.如果定義了兩個預設建構函式,vc只回給出warning.2.如果有預設引數的預設構造,如果你給了第乙個預設的話 所有傳遞引數都要有預設植 否則報錯.不過如果是第乙個引數的預設值沒有給出的話,編譯器卻看不出問題,但是沒有 試過這種情況建構函式能不能正常工作.建構函式 用來初始化物件的資料成員,與類...

C 的建構函式與析構函式與拷貝建構函式

預設情況下,c 編譯器至少給乙個類新增3個函式 1 預設建構函式 無參,函式體為空 2 預設析構函式 無參,函式體為空 3 預設拷貝建構函式 系統預設生成的拷貝建構函式,只負責進行簡單的賦值操作,即淺拷貝 對屬性進行值拷貝 構造函式呼叫規則如下 1.建構函式的作用 初始化時建構函式就開始發揮作用 建...

C 建構函式 拷貝構造 析構函式

建構函式 constructor 在例項物件時,系統自動呼叫,用來初始化物件的資料成員 建構函式宣告語法 類名 引數列表 建構函式注意點 include include using namespace std class computer 上面的建構函式也可以寫成引數列表初始化的形式 compute...