建構函式是類的一種特殊成員,本質上也是類的成員函式。
函式名和類名相同,沒有返回型別,可以有引數。
當建立類的乙個新物件時,建構函式被自動呼叫,完成物件的初始化工作。
實現建構函式:初始化資料成員
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 物件...