複製建構函式和析構函式經典例子

2021-07-01 20:18:52 字數 1188 閱讀 4067

#includeusing namespace std;

class a

{public:

a(){ cout<<"this is construction"<

this is construction

this is construction

this is destruction

this is destruction

this is destruction

結果析構比構造多乙個,這是因為fun函式返回時生成了乙個臨時物件,這個臨時物件是預設複製構造函式呼叫的(因為上面**本身沒有定義賦值建構函式,所以呼叫系統預設的)。然後呼叫賦值函式(也是預設的)賦值給主函式的物件a。

#includeusing namespace std;

class a

{public:

a(){ cout<<"this is construction"<

this is construction

this is destruction

this is destruction

下面加上自定義的賦值建構函式和賦值函式

#includeusing namespace std;

class a

{public:

a(){ cout<<"this is construction"<

this is construction

this is construction

this is copy construction

this is destruction

this is assignment

this is destruction

this is destruction

**:

#includeusing namespace std;

class a

{public:

a(){ cout<<"this is construction"<

this is construction

this is copy construction

this is destruction

this is destruction

返回物件直接

使用為a預留的空間,所以減少了返回臨時物件的生成

建構函式,複製建構函式和析構函式

這些函式在網上很容易就可以查到定義和寫法,這裡就不贅述了。令人感興趣的是這些函式什麼時候執行,特別是複製建構函式和析構函式。用編寫的一段 很醜的 來說明。include include include class point point const point obj point double ge...

C 複製建構函式和析構函式

首先,先來解釋一下幾個概念 複製建構函式 析構函式 複製建構函式 是一種特殊建構函式,具有單個形參,該形參 常用const修飾 是對該類型別的引用。當定義乙個新物件並且對他初始化的時,將顯示使用複製建構函式。當將該型別的物件傳遞給函式或者從函式返回該型別的物件的時候,將隱式的使用複製建構函式。析構函...

C 建構函式 析構函式 複製建構函式

無聊的廢話 距離開始放假已經過去半個月了,這半個月,品讀了一本實用型的繪畫書籍,作了幾幅作品,又做了乙個模型,只是探索未知領域總會遇到各種問題,甚至難以解決的問題,筆者頹廢了兩天煲了一部劇,覺得自己深深的辜負了時間,決定動手總結一下學過的知識,主要是總結資料結構,不過筆者看到當初c 的筆記,決定再鞏...