示例:
<?phpclass
computer
}$comp1 = new
computer();
$comp2 = new
computer();
$comp_1 = $comp1
;
$comp_2 = clone
$comp2
;?>
在上邊示例中我們首先要理解:
1 new computer();建立了兩個物件,分別儲存在堆記憶體中不同區域,然後分別把兩個物件的位址賦值給$comp1和$comp2(儲存在棧記憶體中),所以呢兩者中誰改變都不會影響對方
2 $comp_1 = $comp1,由於$comp1是位址,所以是把位址賦值給了$comp_1,兩者都是指向的同乙個堆記憶體區域,兩者其實是乙個東西,只不過名字不同,殊途同歸
3 $comp_2 = clone $comp2 是轉殖,字面意思,就是複製,把$comp2指向的堆記憶體複製乙份,$_comp_2指向的就是複製的那塊堆記憶體
另外:在類中定義__clone()方法可以改變複製的預設行為,就是自己定義複製(自己定義的複製不一定是完全一樣的再來乙份,定義複製是翻倍還是其他什麼都可以的)
執行複製時會自動呼叫__clone()函式
<?phpclass
computer
}$com1 = new
computer();
$com2 = clone
$com1
;
echo
$com2->name; //
dell
?>
傳值和傳址
let dadproto let sonproto dadproto sonproto.name 李四 console.log sonproto name 李四 age 20 console.log dadproto name 李四 age 20簡單資料型別 傳值 let a 10 let b a ...
傳值和傳址
在vb中呼叫函式或過程時,傳遞引數有兩種方式 傳址和傳值。其中vb預設為傳址方式,關鍵字byref一般可以省略。byref a as integer 表示引數a以傳址方式傳遞給函式或過程 byval a as integer 表示引數a以傳值方式傳遞給函式或過程 傳址就是把乙個存放資料的記憶體位址傳...
傳值,傳址和傳引用
傳值方式 將實參的值拷貝給函式或方法,在函式內對形參進行操作,操作的物件是實參的拷貝,對實參本身沒有影響,在函式結束返回後,形參被丟棄釋放,實參的內容不會被改變。c 一條基本原則 在預設情況下,引數只能以值傳遞的方式給函式,被傳遞到函式的只是變數的值,永遠不會是變數本身。void exchange ...