对象的传值方式:

为什么对于对象,值传递和引用传递,这个情况下,他们似乎没有区别???

这要从对象的数据的存储方式来理解:

$o1 = new C1(); //这里创建一个对象o1,其存储结果如图所示:

这里,实际上,变量$o1中,存储的数据只是一个“对象编号#1”,这个对象编号,才会去指向对象数据new  C1();  该编号数据,我们不能控制,只是系统内部的分配。

则$o2  =  $o1; 作为值传递,实际复制的是该对象的编号:结果情形是:

在语法上,对对象变量的属性进行操作,其实就是通过该编号来指向对象而操作的。

$o1->p1  =  2; //此时,就是通过对象编号#1去修改了对象(new  C1() )本身的内部数据.

echo  $o2->p1; //此时相当于取得变量$o2所包含的编号#1中所指向的对象(new  C1() )的内部数据p1

那么,对应引用传递,情况是这样的:

$o3 = new C1(); //又创建一个对象,图示如下:

然后:

$o4 = & $o3; //引用传递,则其后,他们的关系图示为:

所以:

$o3->p1 = 2; //

echo  $o4->p1; //输出2

最新文章

  1. mybatis自增长插入id
  2. TextBoxFor控件的扩展---Bootstrap在mvc上的应用
  3. 一步一步教你elasticsearch在windows下的安装
  4. 7 HandlerSet 处理程序链表类——Live555源码阅读(一)基本组件类
  5. Android-->Genymotion虚拟机(模拟器)的配置
  6. [Android设计模式]Android退出应用程序终极方法
  7. (转)实战Memcached缓存系统(2)Memcached Java API基础之MemcachedClient
  8. tomcat启动正常,404. Eclipse没有正确部署工程项目
  9. workflow4.0学习资料
  10. Arcgis android - Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE
  11. <Win32_17>集音频和视频播放功能于一身的简易播放器
  12. java 强弱引用
  13. 对List中每个对象元素按时间顺序排序
  14. modbus学习笔记——帧
  15. Oracle GoldenGate 18.1 支持的DB和OS列表
  16. 基于前台vue,后台是spring boot的压缩图片上传
  17. 将ASP.NET网站部署到服务器IIS上
  18. MTK 预置apk
  19. 如何让div在整个页面中居中?
  20. 用SNMP实现对大型网络的轻松管理!

热门文章

  1. 'express'不是内部或外部命令, 也不是可运行的程序, 或批处理文件
  2. IDEA-Debug调试操作
  3. 20155206 《JAVA程序设计》实验二(JAVA面向对象程序设计)实验报告
  4. day2 Ubuntu配置源
  5. GlusterFS学习之路(三)客户端挂载和管理GlusterFS卷
  6. STM32L476的RTC使用问题记录
  7. 搜索引擎ElasticSearch系列(一): ElasticSearch2.4.4环境搭建
  8. python基本数据类型2
  9. 面试之HTTP基础(不断完善中)
  10. C#与mongoDB初始环境搭建