什么是对象标识符?

什么是对象标识符?

什么是对象标识符?

我不能理解对象的赋值这节课中讲的对象的传递赋值,传递赋值不是说两个变量是独立的,互不影响吗?为什么结果会一样?什么是对象的标识符?比如$a=new MyClass(); $b=$a; 那么$a和$b是两个不同的空间,因为是传递赋值。就算改变了类的属性,那么$b为什么会改变呢?


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

您好,解释如下:

对象的赋值是标识符的赋值,不是对象本身,标识符和对象本身存在不同的内存区域。

$a=new Myclass();这里$a空间里其实存的是一个标识符,而这个对象内容,包括属性方法其实存到了另一块内存里,通过$a能够找到这块内存,修改或者读取它的内容。就像我们通过慕课网的地址找到了慕课网,$a这个空间里存的是慕课网地址。它对应着实际的那个办公大厦。当把$a赋值给另一个变量$b,$b跟$a是相互独立的,但是内容是一样,还是慕课网地址,通过它也能找慕课网办公大厦。

如果给$a赋值为1,那1不是慕课网的标识符,通过1就找不到了。

如果解决了您的疑问,请采纳,祝学习愉快~

  • 自律者自由 提问者 #1
    你好,$b=$a,这是传递赋值,那么这两个变量是在不同的存储空间。 $a=new MyClass(); 那么a这个存储空间里面是MyClass这个类的标识符,当a传递赋值给b后,那么b这个存储空间也是MyClass这个类的标识符。 当把1赋值给a后,既$a=1后,为什么b存储空间也会变成1?不是说a,b两个存储空间是独立的,互不影响吗?
    2017-12-25 16:51:48
  • 自律者自由 提问者 #2
    按照我的想法,当把1赋值给a后,那么a的存储空间就是1,但是b的存储空间还是类MyClass的标识符。我就是想不通为什么$a=1后,为什么b也会跟着改变?
    2017-12-25 16:55:13
  • imooc_澈 回复 提问者 自律者自由 #3
    您好,之后再将$a赋值为1,$b是不会跟着变的,您把您的代码贴出来我帮您运行一下看看。
    2017-12-25 18:31:33
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师