1. 類物件的賦值方式
php的類的賦值方式,有3種情況,一種是$a = new class()操作,建立類;一種是普通的物件賦值$a = $b; 一種取位址的賦值方式$a = &$b。那麼,這三種賦值,指向的記憶體是否是同一塊呢?好吧,我們一起來做乙個實驗。
**如下:
<?phpclass
mm $a = new
mm();
echo
$a->name,"\n";//
輸出為peter
$b = $a
; $c = &$a
;$b->name = "anne";
echo
$a->name,"\n",$b->name,"\n",$c->name,"\n";//
都輸出為anne
?>
從輸出結果,我們可以看出,他們三個$a/$b/$c都是指向同乙個物件的,也就是同一塊記憶體。
2. 類物件的clone的賦值方式
好吧,現在,我們一起來試試clone的賦值方式,看看他們是否指向同一塊記憶體。
**如下:
<?phpclass
mm $a = new
mm();
$b = $a
; $c = &$a
;$d = clone
$a;
$b->name = "anne";
echo
$a->name,"\n",$b->name,"\n",$c->name,"\n",$d->name;//
輸出為:anne anne anne peter
?>
從輸出結果,可以看出,$d = clone $a;這個物件指向了單獨的一塊記憶體空間,所以,一直保留著原來的值peter。
3. 小結:
在php5的類物件操作中,$a=$b和$a=&$b這種賦值方式,指向的是同乙個物件,同一塊記憶體空間;$a=clone $b這種賦值方式,則是指向另乙個新的物件,另乙個塊新的記憶體空間。
原文
PHP的類物件的賦值和clone的區別
1.類物件的賦值方式 php的類的賦值方式,有3種情況,一種是 a new class 操作,建立類 一種是普通的物件賦值 a b 一種取位址的賦值方式 a b。那麼,這三種賦值,指向的記憶體是否是同一塊呢?好吧,我們一起來做乙個實驗。如下 class mm public name peter a ...
C 類物件的複製和賦值
例1.類物件複製,拷貝建構函式 includeusing namespace std class student void setname string str void getname private string m strname void student setname string str...
PHP 類和物件(類的屬性)
在類中定義的變數稱之為屬性,通常屬性根資料庫中的字段有一定的關聯,因此 也可以稱其為 字段 常見的屬性宣告是由關鍵字public,protected,var或private開頭,後面跟乙個普通的變數聲 來組成。還有一些成員屬性包括,靜態static,常量const。public 預設值,表示全域性的...