C 建構函式與析構函式小結

2021-10-04 02:21:37 字數 1128 閱讀 6594

建構函式是一種特殊的類成員函式,它在建立類物件的時候被呼叫。建構函式的名稱和類名相同,但是可以通過函式過載建立多個同名的建構函式,前提是每個建構函式的引數列表不同。同時建構函式沒有型別宣告,建構函式通常用於物件初始化成員,所以初始化應該和建構函式的引數列表匹配。假設b類的建構函式原型如下:

b

(const

char

*p1,

const

char

*p2)

;

那麼可以用它來初始化新建立的物件

b boo

("naicha"

,"xiangyu");

b boo =b(

"naicha"

,"xiangyu");

b *boo =

newb

("naicha"

,"xiangyu"

);

如果編譯器支援c++11,也可以用列表初始化

b boo

;b boo =

;b *boo =

new b

;

此外預設的建構函式沒有引數,如果我們建立類物件是沒有進行顯式的初始化操作,程式將會呼叫預設建構函式。如果程式裡沒有編寫預設建構函式,編譯器將會為程式提供乙個預設建構函式。預設建構函式沒有引數,如果我們自己編寫的預設建構函式想要有乙個引數,那麼必須要在預設建構函式中給每乙個引數預設值。

b()

;bo(const

char

* p =

"xiangyu"

);

如果在建立類物件時未初始化,程式將呼叫預設建構函式來建立

b boo;

b *bp =

new b;

物件在被建立時會呼叫建構函式,同樣物件在被刪除時程式也會呼叫析構函式。

析構函式每乙個類只能有乙個,並且析構函式是沒有型別的(連void都不是)也沒有引數,在其名字前面加上~,例如b類函式的析構函式原型如下

~b(

);

如果建構函式用了new,那麼對應的析構函式也必須使用delete。

c 建構函式,拷貝建構函式,析構函式小結

1 建構函式 乙個特殊的類成員函式,函式名與類名相同,建立類型別物件時,由編譯器自動呼叫,在物件的生命週期中隻且只呼叫一次,以保證每個資料成員都有乙個合適的初始值。有初始化階段與普通計算階段。class date date int year,int month,int day year year m...

c 建構函式與析構函式

一 建構函式 c 提供建構函式來處理物件的初始化,建構函式是一種特殊的成員函式,與其他的成員函式不同,不需要使用者來呼叫他,而是在建立物件時自動執行。它的特點是 函式名和類名相同,沒有返回值,可以過載 如果程式中未宣告,則系統自動產生出乙個預設的建構函式,預設的建構函式時不帶引數的。比如 stude...

C 建構函式與析構函式

c 規定,每個類必須有預設的建構函式,沒有建構函式就不能建立物件。若沒有提供任何建構函式,那麼c 提供自動提供乙個預設的建構函式,該預設建構函式是乙個沒有引數的建構函式,它僅僅負責建立物件而不做任何賦值操作。只要類中提供了任意乙個建構函式,那麼c 就不再自動提供預設建構函式。類物件的定義和變數的定義...