類與物件的關係就是共性與個性,一般與特殊的關係,世界的物質性,是普遍存在於萬物,是萬物的共性,但是個性離不開共性,共性寓於個性之中。
不同物件之間的區別有二:第一,物件的名稱不同,第二,物件自身的屬性值,資料成員的值不同。
<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.內聯成員函式 ...