由類得到物件需要建構函式,系統會自動呼叫相應的建構函式;物件使用完後需要釋放占有的資源,系統會自動呼叫相應的析構函式。
◆ 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 編譯器會按照 位拷貝 的方式提供預設的建構函式 不初始化 預設的賦值建構函式 淺賦值 預設的拷貝建構函式 淺拷貝 預設的析構函式。位拷貝要小心指...