建構函式是一種特殊的類成員函式,它在建立類物件的時候被呼叫。建構函式的名稱和類名相同,但是可以通過函式過載建立多個同名的建構函式,前提是每個建構函式的引數列表不同。同時建構函式沒有型別宣告,建構函式通常用於物件初始化成員,所以初始化應該和建構函式的引數列表匹配。假設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 就不再自動提供預設建構函式。類物件的定義和變數的定義...