第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

能給我講講這段代碼是怎樣運(yùn)行嗎?

能給我講講這段代碼是怎樣運(yùn)行嗎?

PHP
錯(cuò)過(guò)了年華 2017-04-05 23:23:07
class?SubObject { ????static?$instances?=?0; ????public?$instance; ????public?function?__construct()?{ ????????$this->instance?=?++self::$instances; ????} ????public?function?__clone()?{ ????????$this->instance?=?++self::$instances; ????} } class?MyCloneable { ????public?$object1; ????public?$object2; ????function?__clone() ????{ ?????? ????????//?強(qiáng)制復(fù)制一份this->object,?否則仍然指向同一個(gè)對(duì)象 ????????$this->object1?=?clone?$this->object1; ????} } $obj?=?new?MyCloneable(); $obj->object1?=?new?SubObject(); $obj->object2?=?new?SubObject(); $obj2?=?clone?$obj; print("Original?Object:\n"); print_r($obj); print("Cloned?Object:\n"); print_r($obj2);
查看完整描述

1 回答

已采納
?
程重吾

TA貢獻(xiàn)2條經(jīng)驗(yàn) 獲得超0個(gè)贊

首先 print_r 不會(huì)輸出對(duì)象的靜態(tài)屬性和方法 ??

$obj = new MyCloneable();//實(shí)例化類對(duì)象,這個(gè)沒(méi)什么好說(shuō)的

$obj->object1 ?= new SubObject();//當(dāng)實(shí)例化一個(gè)類時(shí),構(gòu)造方法__construct(){},會(huì)被自動(dòng)調(diào)用,

此時(shí):

????????????$this->instance = ++self::instances;//靜態(tài)成員屬性instances先自增(與self::instances++不同),再賦值給instance,此時(shí)值為1,(也就是說(shuō) ?static?$instances?= 1)注意該值的變化

$obj->object2 = new SubObject();//這里同上 ?此時(shí)instance的值是2了 ? static?$instances?= 2;?

所以print_r($obj)輸出結(jié)果(關(guān)注instance的值):

????????????對(duì)象object1里面的instance 的值是 ?1

????????????對(duì)象object2里面的instance 的值是 ?2

接下來(lái)分析:$obj2 = clone $obj;//克隆一個(gè)對(duì)象,當(dāng)克隆一個(gè)對(duì)象時(shí),會(huì)自動(dòng)調(diào)用該對(duì)象的__clone(){}方法

所以接下來(lái) $obj該對(duì)象的克隆方法會(huì)被調(diào)用,$obj 是通過(guò) new MyCloneable該類獲得的,那么

????????__clone(){

?????????????????$this->object1?=?clone?$this->object1;//該代碼被調(diào)用

}

接著分析????$this->object1?=?clone?$this->object1;//該對(duì)象的成員屬性object1 克隆自己 ?,因此:

該成員屬性object1的 克隆方法 也會(huì)被調(diào)用 ? (注意:object1 是一個(gè)對(duì)象,他是怎么來(lái)的?)

通過(guò)new SubObject該類獲得的,所以

????????該對(duì)象的克隆方法是

????????public?function?__clone()?{

????????$this->instance?=?++self::$instances;//該代碼被調(diào)用,上面解釋過(guò)該代碼了,static?$instances?= 3;

????????}

?????所以print_r($obj2);結(jié)果是:

????????????對(duì)象object1里面的instance 的值是 ?3

????????????對(duì)象object2里面的instance 的值是 ?2 ?(這里沒(méi)變)


查看完整回答
反對(duì) 回復(fù) 2017-04-10
  • 1 回答
  • 2 關(guān)注
  • 1459 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)