建構函式和析構函式

2021-07-12 01:01:25 字數 1063 閱讀 5187

建構函式被定義為物件例項化時自動執行的一段**。

1、建構函式可以接受引數,能夠在建立物件時賦給特定的物件屬性

2、建構函式可以呼叫類方法或其他函式

3、類的建構函式可以呼叫其它建構函式,包括父類的建構函式

notice

php4也提供了類建構函式,但它使用了與php5不同的語法,更為麻煩。php4的建構函式只是與類同名的類方法。這種約定使得很難對類重新命名。新的建構函式命名約定解決了這個問題。但是,處於對相容性的考慮,如果乙個類沒有包含滿足新命名約定的建構函式,就會查詢與類同名的方法;如果找到,此方法就被認為是建構函式。

function __construct([argumrnt1, argumrnt2...argumrntn ]){}

tips:如果要確保這些方法只能在建構函式中被呼叫,就應當將其作用於設定為private,確保無法通過物件或子類直接呼叫它們。

php不會自動呼叫父類建構函式,必須使用parent 關鍵字顯示呼叫。例項如下:

<?php  

class employee

} class manager extends employee

} $employee = new manager();

?>

可以呼叫與例項化物件沒有任何關係的類建構函式,只需在__construct 前面加上類名即可。

舉個例子,假設前面示例中的manager 和 employee 類沒有繼承層次關係,只是同乙個庫中的兩個類。employee的建構函式依然可以在manager建構函式中被呼叫:

employee::__construct();

這樣呼叫employee建構函式將得到與前例相同的結果。

析構函式名為 __destruct()。

指令碼執行結束時,php會撤銷記憶體中的所有物件。

因此,如果例項化的類和例項化時建立的資訊都留在記憶體中,就不需要顯示的宣告析構函式;

但是,如果例項化時建立了不那麼容易丟失(如儲存在資料庫中)的資料,並應當在物件撤銷時撤銷這些資料,為此就需要建立乙個定製的析構函式。

建構函式和析構函式

建構函式沒有返回值,不能被顯示的呼叫。它是在定義物件時由系統自動執行的,而且只執行一次。如果沒有定義建構函式,系統會自動生成乙個建構函式,只是這個建構函式的函式體是空,沒有引數,也不執行任何初始化的操作。帶引數的建構函式 有一種簡練,方便的寫法 建構函式的引數初始化表 box int h,int w...

析構函式和建構函式

每個物件生成的時候都要完成物件的初始化,如設定屬性的初始值。c 中規定每個類都有乙個初始值,如果沒有,系統會產生乙個預設的建構函式。這個建構函式沒有任何引數,不做任何額外的工作。但往往我們會自己寫乙個建構函式,用來進行特殊的初始化工作。這樣的話,編譯器就不會再為其生成預設的建構函式。class 類名...

建構函式和析構函式

stock hot 因為資料部分的訪問狀態是私有的,程式不能訪問資料成員。建立stock的建構函式,由於需要為stock提供3個值,因此應為建構函式提供3個引數值,程式設計師可能指向設定company成員,而其他的設定為0 使用預設引數完成 宣告如下 stock const char co,int ...