建構函式、複製建構函式和析構函式是c++類中系統會預設建立的三個成員函式。
建構函式:
該類物件被建立時,編譯系統物件分配記憶體空間,並自動呼叫建構函式,由其完成成員的初始化工作。
建構函式可以有多個過載。
複製建構函式被呼叫的三種情況:
1. 函式形參,呼叫函式時
2. 函式返回值為形參時
3. 乙個物件通過另乙個例項初始化
複製建構函式只能有乙個,不能過載。
析構函式被呼叫的四種情況:
1. 如果在乙個函式中定義了乙個物件(它是自動區域性物件),當這個函式被呼叫結束時,物件應該釋放,在物件釋放前自動執行析構函式。
2. static區域性物件在函式呼叫結束時物件並不釋放,因此也不呼叫析構函式,只在main函式結束或呼叫exit函式結束程式時,才呼叫static區域性物件的析構函式。
3. 如果定義了乙個全域性物件,則在程式的流程離開其作用域時(如main函式結束或呼叫exit函式) 時,呼叫該全域性物件的析構函式。
4. 如果用new運算子動態地建立了乙個物件,當用delete運算子釋放該物件時,先呼叫該物件的析構函式。
析構函式的作用並不是刪除物件,而是在撤銷物件占用的記憶體之前完成一些清理工作,使這部分記憶體可以被程式分配給新物件使用。程式設計者事先設計好析構函式,以完成所需的功能,只要物件的生命期結束,程式就自動執行析構函式來完成這些工作。
析構函式只能有乙個,不能過載。
建構函式,複製建構函式和析構函式
這些函式在網上很容易就可以查到定義和寫法,這裡就不贅述了。令人感興趣的是這些函式什麼時候執行,特別是複製建構函式和析構函式。用編寫的一段 很醜的 來說明。include include include class point point const point obj point double ge...
C 建構函式 析構函式 複製建構函式
無聊的廢話 距離開始放假已經過去半個月了,這半個月,品讀了一本實用型的繪畫書籍,作了幾幅作品,又做了乙個模型,只是探索未知領域總會遇到各種問題,甚至難以解決的問題,筆者頹廢了兩天煲了一部劇,覺得自己深深的辜負了時間,決定動手總結一下學過的知識,主要是總結資料結構,不過筆者看到當初c 的筆記,決定再鞏...
建構函式 複製建構函式 型別轉換建構函式 析構函式
成員函式的一種,名字與類名相同,可以有引數,不能有返回值 void也不行 乙個類可以有多個建構函式。如果定義類時沒寫建構函式,則編譯器生成乙個預設的無參建構函式,這個建構函式不做任何操作。如果定義了建構函式,則編譯器不生成預設的無參建構函式。物件生成時建構函式自動被呼叫,物件一旦生成,就再也不能在其...