構造與析構函式

2021-07-09 14:00:17 字數 1228 閱讀 8549

1、建構函式

作用:建立類物件,並初始化其成員。(可定義多個進行過載)

注:建構函式可以有引數,無返回型別,不能是虛函式,在類體外定義時其函式名前加上「類名 : :」,可過載

若乙個類物件是另乙個類物件的資料成員,那麼在建構函式建立物件時,作為資料成員的類物件要先呼叫自身的建構函式;(區域性到整體)

2、析構函式

作用:撤銷類物件,**資源

注:析構函式無引數,無返回型別,不能過載

析構函式以呼叫建構函式相反的順序被呼叫(整體到區域性)

3、有參建構函式

無參構造建立的類物件具有相同的初始化值,若需類物件按不同特徵初始化不同的值,應採用有參建構函式;

初始化方式:

一般初始化          :函式體內初始化;

初始化列表初始化:函式體外初始化;

幾種須在建構函式初始化列表中初始化的情況:

a.const成員

b.引用成員

c.有參構造物件成員(物件對應的類沒有預設建構函式)

轉換建構函式:

定義:建構函式只有乙個引數,且該引數不是本類的const引用時,稱為轉換構造

作用:將乙個其他型別的資料轉換成乙個類的物件

禁止轉換構造:在單個引數的建構函式前加上關鍵字「explicit「,阻止轉換構造,阻止定義物件時使用等號初始化物件;

4、預設建構函式

c++規定,每個類必須有乙個建構函式,沒有建構函式就不能建立物件。若未定義建構函式,則c++提供乙個預設建構函式,該預設建構函式是乙個無參建構函式,僅建立物件,不進行初始化。若類中定義了建構函式,則c++不再提供預設建構函式。如果還需要無參建構函式,必須自定義。

乙個類若什麼都沒有被稱為空類,乙個空類的大小為1位元組,並且編譯器會為其隱式生成6個成員。

5、拷貝構造

格式:《類名 > : : 《拷貝建構函式名》(《類名》&《引用名》)

作用:用乙個物件值建立並初始化另乙個物件;

特點:a.拷貝建構函式名與類同名,無返回型別;

b.拷貝建構函式只有乙個形參,該引數是對該類物件的引用。

注:若乙個類中未定義拷貝建構函式,則系統自動生成乙個預設拷貝建構函式,將已知物件的所有資料成員的值拷貝給對應物件的資料成員

其他作用:

a.將物件作為實參進行函式呼叫時,系統自動呼叫拷貝建構函式將物件值傳遞給形參物件;

b.當函式返回值為物件時,系統自動呼叫拷貝建構函式用返回物件值建立乙個臨時物件,然後再將臨時物件值賦給接收函式返回值的物件;

建構函式與析構函式

建構函式 主要作用就是為物件初始化。有一點要說的是,在繼承體系彙總,如果在建構函式中,如果沒有指定基類的建構函式,那麼編譯器會在建構函式開頭加入,基類的預設建構函式,這樣就可以初始化基類物件部分 析構函式 對於析構函式,要說的多點,實際也不太複雜,就是加入了virtual 使其具有了多型性質 inc...

建構函式與析構函式

建構函式 先看看建構函式的呼叫順序規則,只要我們在平時程式設計的時候遵守這種約定,任何關於建構函式的呼叫問題都能解決 建構函式的呼叫順序總是如下 1.基類建構函式。如果有多個基類,則建構函式的呼叫順序是某類在類派生表中出現的順序,而不是它們在成員初始化表中的順序。2.成員類物件建構函式。如果有多個成...

建構函式與析構函式

概述 乙個類有兩種特殊的成員函式 建構函式與析構函式。建構函式功能是在建立物件時,給資料成員賦初值,即物件的初始化。析構函式的功能是釋放乙個物件,在物件刪除前,用它做一些記憶體釋放工作,與建構函式的功能相反。建構函式 在物件建立時它會被自動執行,因此變數 物件的初始化 一般都放在建構函式中。1 物件...