C 建構函式和析構函式

2021-08-04 20:55:54 字數 1437 閱讀 6135

由類得到物件需要建構函式,系統會自動呼叫相應的建構函式;物件使用完後需要釋放占有的資源,系統會自動呼叫相應的析構函式。

◆ 1、什麼是建構函式

建構函式是特殊的public型成員函式,其特徵如下:

函式名與類名相同。

建構函式無函式返回型別說明。注意是沒有而不是void,即什麼也不寫,也不可寫void!實際上建構函式有返回值,返回的就是建構函式所建立的物件。

在程式執行時,當新的物件被建立,該物件所屬的類的建構函式自動被呼叫,在該物件生存期中也只呼叫這一次。

建構函式可以過載。嚴格地講,說明中可以有多個建構函式,它們由不同的參數列區分,系統在自動呼叫時按一般函式過載的規則選乙個執行。

建構函式可以在類中定義,也可以在類外定義。

如果類說明中沒有給出建構函式,則c++編譯器自動給出乙個預設的建構函式:類名(void) ; ,不論自己定義還是c++編譯器給出,預設的建構函式只有乙個。

2、例如,前面宣告的商品類,新增以下兩個建構函式。

cgoods (char* name , int amount , float price)

在實際應用時,也可以只用兩個引數:貨名和單價,這時建構函式為:

cgoods (char* name , float price)

這兩個建構函式同時被說明,乙個是三引數函式,乙個是兩引數函式。

3、建構函式的使用

如果定義物件時的格式為:

cgoods car1(「夏利2000」,30,98000.0) ;

則呼叫了cgoods中的第乙個建構函式,相當於自動呼叫建構函式:

cgoods(「夏利2000」,30,98000.0) ;

如果定義物件時的格式為:

cgoods car2(「桑塔那2000」,164000.0) ;

則呼叫的是第二個建構函式,引數為兩個。

定義物件時也可以把建構函式顯式表示出來如:

cgoods car1= cgoods(「夏利2000」,30,98000.0);

還可定義乙個建構函式:

cgoods( )

用它定義物件:例如:cgoods car3;

但是用它定義物件時不能加括號。例如:cgoods car4();則錯了。

1、什麼是析構函式

當乙個物件定義時,c++自動呼叫建構函式建立該物件並進行初始化,那麼當乙個物件的生命週期結束時,c++也會自動呼叫乙個函式登出該物件並進行善後工作,這個特殊的成員函式即析構函式(destructor):

2、析構函式的使用

物件用完後,系統會自動呼叫的,不用煩了。但是,動態物件要記著自己主動釋放!

3、對於不同作用域的物件型別,建構函式和析構函式的呼叫如下:

C 建構函式和析構函式

1.建構函式是類的一種特殊方法,每次建立類的例項都會呼叫它。在建立乙個類的例項時,建構函式就像乙個方法一樣被呼叫,但不返回值。語法格式 訪問修飾符 類名 特性 1 其名字必須與類名相同,例如 public class myclass 2 不能被直接呼叫,必須通過new運算子來 呼叫。publiccl...

C 建構函式和析構函式

建構函式 class rectangel rectangel int l,int w 這是帶引數的建構函式,建構函式都是沒有返回值,並且和該類同名 int area 這是另一種形式的內聯函式,把宣告和定義寫在一起的也是內聯函式 private int length int width 析構函式 cl...

c 建構函式和析構函式

1.c 的建構函式有預設建構函式,一般的建構函式,賦值建構函式,拷貝建構函式 複製建構函式 強制型別轉化建構函式。2.如果沒有定義建構函式和析構函式,則c 編譯器會按照 位拷貝 的方式提供預設的建構函式 不初始化 預設的賦值建構函式 淺賦值 預設的拷貝建構函式 淺拷貝 預設的析構函式。位拷貝要小心指...