php 物件賦值 一般賦值和引用賦值的記憶體實行方式?

時間 2021-05-11 20:41:37

1樓:jackson

其實在PHP官網有詳細的說明物件賦值的問題,文中提到乙個物件變數儲存的是指向物件的控制代碼,把乙個物件變數賦值給另外乙個物件就是把物件控制代碼拷貝乙份,只不過這個物件控制代碼執行同乙個物件。 而引用就是乙個變數的別名,他們指向相同的資料。

原文截圖:

php.net/manual/zh/language.oop5.basic.php

2樓:PHP

php的引用是別名,就是兩個不同的變數名字指向相同的內容。

在php5,乙個物件變數已經不再儲存整個物件的值。只是儲存乙個識別符號來訪問真正的物件內容。 當物件作為引數傳遞,作為結果返回,或者賦值給另外乙個變數,另外乙個變數跟原來的不是引用的關係,只是他們都儲存著同乙個識別符號的拷貝,這個識別符號指向同乙個物件的真正內容。

3樓:

套用c++的理解,望指正但不望噴。instance存放例項物件的位址,那麼reference是存放了它的引用,也就是它的乙個外號,而不是拷貝,所以前者被置null,後者也就是null,而assigned是個拷貝,拷過來後,原版如何和副本沒關係了,所以assigned能保留住原來的內容

4樓:魯小夫

PHP 引用不是指標,也不是記憶體位址 PHP: References Explained

PHP 物件跟引用的關係,唉,扶額 PHP: Objects and references

所以有如下結論:

$instance and $reference are different variables of the same value, i.e. the same object identifier.

Setting $instance to null, $reference becomes null too, they refer the same value.

$instance and $assigned are different variables of two object identifiers. The object identifier holding by $assigned is a copy of the object identifier by $instance, but both identifiers point to the same object value.

很菜,輕噴。

我討厭 PHP 。

Java中對引用型別的賦值和返回是原子操作嗎?

楊陽洋DMC JMM記憶體模型,有八種操作,lock,unlock,read,load,use,assign,store,write這八個操作是原子操作。另外就是 synchronized,和 volatile相關原子操作。你這new的物件,編譯成位元組碼看一下,應該有load use等指令,所以不...

Python裡面如何拷貝乙個物件?(賦值,淺拷貝,深拷貝的區別)

歲歲 python中淺拷貝和深拷貝的區別如下 1.copy.copy 淺拷貝只拷貝父物件,不會拷貝物件的內部的子物件。2.copy.deepcopy 深拷貝拷貝物件及其子物件 如果拷貝物件是乙個一維列表,那麼淺拷貝和深拷貝沒什麼不同,都是重新申請乙個新的記憶體位址。import copy list1...

為啥帥的男生,物件一般,漂亮的女生物件也一般。?

1.因為他們不用整天擔心物件被搶走,安全感有了。2.他們不用看物件的顏值,因為看自己就夠了3.顏值偏低的人會好好對待高顏值的那個更好,你給了我視覺享受,我當然會對你好 4.顏值高的人通常不看重外表,對他們來說,能活得很滿足就足夠了。5.找乙個顏值高的人做物件勢必要比找顏值不那麼高的人更難,他們為啥要...