为了账号安全,请及时绑定邮箱和手机立即绑定

复制方法里面的两句话可有可无啊!!

<?php
class Car {
    public $name = 'car';

    public function __clone() {
//         $obj = new Car();
//         $obj->name = $this->name;
    }
}
$a = new Car();
$a->name = 'new car';
$b = clone $a;
if($a == $b){
    echo "yes!!";
}
echo $b -> name;

输出结果是yes!!new car

说明魔方函数里面的两句话没用啊!!!那这两句话是干嘛的,难道真的可有可无??

正在回答

1 回答

复制函数是在类的对象被复制的时候调用的,这个例子里面调用复制函数的功能是:创建一个Car类,把被复制类a的name属性的值,赋给新复制出来的类b的name属性,如果把

$obj->name = $this->name;

改成:

$obj->name = 'abc';

的话,复制出来的类的name属性就是abc,而新创建的类的name属性是car。

0 回复 有任何疑惑可以回复我~
#1

mirai酱

复制函数不写内容的话,默认的是一一对应的复制被复制的类的属性和方法,要说没有用的话,是他写的内容是和默认内容一样的,一般而言,复制函数用在静态属性上,用来统计复制的类的个数。
2017-05-19 回复 有任何疑惑可以回复我~
#2

mirai酱

应该改成$this->name = 'abc';
2017-05-19 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

复制方法里面的两句话可有可无啊!!

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信