C 類與物件 二 建構函式和析構函式

2021-08-14 07:37:26 字數 1634 閱讀 6984

類與物件的關係就是共性與個性,一般與特殊的關係,世界的物質性,是普遍存在於萬物,是萬物的共性,但是個性離不開共性,共性寓於個性之中。

不同物件之間的區別有二:第一,物件的名稱不同,第二,物件自身的屬性值,資料成員的值不同。

<1>建構函式:在物件被創立的時候利用特定的值去構造物件,將物件初始化為乙個特定的狀態。

首先,建構函式是類的乙個成員函式(public),建構函式的函式名與類名相同,沒有返回值。建構函式在物件被創立時自動被呼叫。

其次,如果自己不宣告建構函式,或者說,沒有一些資料成員需要被在建立時初始化,那麼系統會自動呼叫,沒有函式體的預設的建構函式。

預設建構函式

class fun

//這個可以不用寫,系統自動生成,養成習慣最好寫上

p...

};呼叫語句:

fun fun1;

使用者自定義建構函式

class fun

;fun::fun(int nx,int ny,int nz)

呼叫語句:

fun fun1(10,12,12);

最後,建構函式可以直接訪問類的所有資料成員,可以是內聯函式,可以帶有參數列,可以帶有預設的形參值,可以過載,例如:

class fun

fun()//過載

p...

private:

int x,y,z;

p...

};呼叫語句:

fun fun1(10,12,12);

fun fun2();

<2>複製建構函式:是一種特殊的建構函式,使用乙個已經存在的物件去初始化同類的乙個新物件。

class 類名

;類名::類名(類名 &物件名)

複製建構函式被呼叫情況分析:

第一,乙個類的物件去初始化該類的另乙個物件時

fun a(2,2,2);

fun b(a);

fun b=a;

兩種方式一樣

第二,如果函式的形參是累的物件,呼叫函式時,進行形參和實參的結合的時候

void functiona(fun fun1)

第三,函式的返回值是類的物件的時候

fun functiona(...)

當呼叫fun fun2=functiona(...);時函式的返回值存到臨時物件中,這個過程需要用到複製建構函式,當執行完fun fun2=functiona(...);之後臨時物件,注意這裡的fun2不是臨時物件,臨時物件是編譯過程中產生的在函式functiona(...)執行完return之後和在執行fun fun2=functiona(...);之前的這段時間由於fun1已經消失了,故此時把fun1的值通過複製建構函式存到臨時物件中。

<3>析構函式:掃尾工作

class fun

}

C 類(二) 建構函式和析構函式

int years 2001 struct thing thing amabob valid intialization stock hot no compiler error c 不能像初始化 years,amabob一樣,初始化hot。原因是資料隱藏 資料部分的訪問是私有的。因此,c 提供了一類...

類與物件 建構函式與析構函式

建構函式是對物件的初始化,析構函式是對物件進行清理 由於類的資料成員不能在定義時進行初始化,所以需要一種特殊的函式幫助類的物件進行初始化操作 物件的初始化與物件的清理是必須要執行的兩個部分,所以如果不手動提供建構函式和析構函式,編譯器會自動提供這兩個函式用來完成上面的兩個部分的內容,但是編譯器自己給...

類和物件 構造析構函式

a.類和物件 1.關鍵字class表明正宣告乙個類,類中資料成員 屬性 和資料功能 行為 經過封裝,使得使用者通過外部介面訪問。2.類的封裝隱藏了實現細節,同時也保證了資料的安全性。3.只要類的外部介面不變,內部實現細節再怎麼修改,使用類庫的程式也不用修改。4.物件是類型別的變數。5.內聯成員函式 ...