zoukankan      html  css  js  c++  java
  • 深拷贝和浅拷贝

    <?php
    /**
    *深拷贝、浅拷贝
        深拷贝:将被拷贝对象中引用的类一起拷贝
        浅拷贝:拷贝对象时,不能够将对象中引用的其他对象进行拷贝
    *
    */
    
    class Test{
        public $a = 1;
    }
    
    class TestOne{
        public $b = 2;
        public $obj;
        public function __construct(){
            $this->obj = new Test();
        }
    }
    
    $test = new TestOne();
    
    /**
    * 浅拷贝
    */
    
    $test_shallow = clone $test;
    $test_shallow->b = 3; //改变拷贝出来的对象中的$b的值 被拷贝对象的$b的值不变
    echo $test->b."
    "; //输出 2
    
    $test_shallow->obj->a = 5; //改变拷贝出来的对象中引用的obj的$a的值,被拷贝对象中相应的值也会改变,说明两个对象中的obj指向了同一个对象
    echo $test->obj->a; //输出5
    
    
    
    /**
    *深拷贝  无论如何改变$test_deep的值都和$test对象无关
    */
    $test_deep = serialize($test);
    $test_deep = unserialize($test_shen);
    $test_deep->obj->a = 6;
    echo $test->obj->a;
  • 相关阅读:
    线程的用法
    提高VS2010的性能,VS2010不再卡
    win7 远程桌面最大化快捷键
    java类加载器
    Class类
    JDBC获得oracle数据库主键值
    Zookeeper入门基础知识
    项目js总结
    jdk8 stream项目使用
    全局请求参数去除空格
  • 原文地址:https://www.cnblogs.com/itsuibi/p/10948588.html
Copyright © 2011-2022 走看看