建構函式與析構函式

2021-10-06 04:39:21 字數 1481 閱讀 3834

建構函式是類的一種特殊成員,本質上也是類的成員函式。

函式名和類名相同,沒有返回型別,可以有引數。

當建立類的乙個新物件時,建構函式被自動呼叫,完成物件的初始化工作。

實現建構函式:初始化資料成員

1、賦值語句的方式:

clock(int h,int m,int s)

2、表示式表的方式:

clock (int h,int m,int s):hour(h),minute(m),second(s){}

如果建構函式有引數,但是在建立物件時有又不給出對應的引數,此時編譯出錯

具有預設引數的建構函式

1、建構函式也可以有預設引數,如果在類外實現該函式時,就不能再說明預設值了。

2、對於沒有建構函式的類,編譯器將會自動為它生成乙個沒有引數的建構函式,該函式不做任何工作。

乙個類可以提供多個建構函式,即建構函式的過載。過載函式

1、與建構函式相對,c++通過析構函式來處理物件被銷毀時的清理工作。

2、析構函式沒有返回型別,沒有引數,函式名是在類名前加~

3、析構函式將會在物件的生存期結束後被自動呼叫。

4、如果沒有顯式說明,編譯器將會生成乙個不做任何事的預設析構函式。

一般情況下,我們不使用析構函式,但也有例外。

class

cstring

;cstring::

cstring

(int n)

void cstring::

copy

(char

*src)

void

func()

void

main()

建構函式與析構函式在繼承與派生之中的應用

拷貝建構函式:

如果將與自己同類的物件的引用作為引數進行建構函式的初始化時,該建構函式就稱為拷貝建構函式。

拷貝建構函式的特點:

1、他是乙個建構函式,當建立物件時系統會自動呼叫它。

2、它將乙個已經建立好的物件作為引數,根據需要將該物件中的資料成員逐一對應地賦值給新物件。

class

point

point

(point& obj)};

void

main()

; cstring::

cstring

(cstring& obj)

{ len=obj.len;

buf=

newchar

[len]

;//建立乙個新的空間

strcpy

(buf,obj.buf)

;

拷貝建構函式起作用的地方:1、在建立新物件時被呼叫。2、物件作為函式引數時被呼叫。3、函式返回物件時被呼叫。

建構函式與析構函式

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

建構函式與析構函式

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

建構函式與析構函式

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