C 建構函式與析構函式

2021-10-10 04:04:14 字數 1279 閱讀 6079

當定義乙個物件時,必須呼叫建構函式建立該物件並進行初始化,也叫做例項化函式。建構函式絕大情況下是共有的成員函式。

建構函式的特徵:

1.函式名與類名相同

2.建構函式沒有返回值,返回的就是構造的物件

3.建構函式只能被系統調動一次

4.建構函式可以過載,可以構造不同引數的物件。

5.如果類中沒有定義建構函式,則系統會自動給出乙個預設的建構函式。

//建構函式舉例

class

cgoods

cgoods

(char *name,float price)

//帶有兩個引數的建構函式

cgoods

(int x=0)

:value

(x)//帶有乙個引數的建構函式

cgoods()

//不帶引數的建構函式

}int main()

注意:建立物件時需要調動建構函式,呼叫建構函式有實參則加括號,呼叫預設函式不加括號。不能用cgoods c4()來調動,因為會與函式宣告發生衝突。

建構函式的功能:1.建立物件,注意不是建立空間。 2.對物件的成員進行初始化 3.進行型別轉換,運算子過載。

當乙個物件的宣告週期結束時,c++會自動調動乙個函式登出該物件並進行」善後「工作,這個特殊的成員函式就是析構函式。

析構函式的特徵:

1.析構函式名與類名相同,但要在前面加上字元『』,如cgoods()。

2.析構函式無引數返回型別,也不帶任何引數。

3.乙個類有且只有乙個析構函式。析構函式可以預設。

4.物件登出時,系統將自動呼叫析構函式。

~

cgoods()

//析構函式

注意,c++是物件導向的語言,空間是空間,物件是物件。有空間,不一定有物件。必須先分配空間再定義物件。

所以,調動函式,函式中有物件,先給物件分配空間,函式結束,先析構物件再**空間。

全域性變數 在.data區建立空間,主函式在.stack區建立空間。而在資料區和棧區的空間的申請和釋放由系統控制,物件的建立和析構也由系統控制。

對於沒有任何屬性的空物件,也會給其分配空間,因為有物件必然要有空間,會分配1位元組的空間,叫做佔位符。系統會為其新增乙個預設的建構函式和析構函式。自己本身也可以調動析構函式進行自我銷毀。

class

empty

~empty()

}int main()

c 建構函式與析構函式

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

C 建構函式與析構函式

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

C 建構函式與析構函式

建構函式 對於c 的建構函式,暫且將其分為以下幾類 1.預設建構函式 2.隱士轉換建構函式 3.拷貝建構函式 4.其它建構函式 1.預設建構函式表示沒有任何引數的建構函式,當自定義任何建構函式以後,將不再自動建立預設建構函式,當然,預設建構函式啥也不幹,程式設計師關心係數頓時大跌。關於預設建構函式還...