面向对象语言中的变量/对象数据结构



在面向对象的编程语言中,当您定义一个变量时,它最终成为对对象的引用。变量本身不是对象,而是指向携带赋值给该变量的值的对象。

问题是这是如何有效地工作的?如何将变量赋值给对象的机制是什么?

我认为组织是一个链表,但是找不到参考数据是如何用Ruby或Java等语言构建的

在面向对象的编程语言中,当你定义一个变量时,它最终会成为一个对象的引用。

这并不总是正确的。例如,c++可以被认为是一种面向对象的语言,但是该语言的用户可以将变量用作引用/指针或显式地用作值。

然而,你是对的,一些(通常是高级的)OO语言隐式地使用引用,这样语言的用户就不必担心这些与性能有关的实现"细节"。他们反而试图承担责任。

这是如何有效地工作的?如何将变量赋值给对象的机制是什么?

考虑一个简单的例子。当对象作为参数传递给函数时会发生什么?必须创建该对象的副本,以便函数可以在本地引用该对象。对于隐式使用引用的OO语言,只需要复制对象的地址,而真正的按值传递将需要复制对象的完整内存内容,这可能非常大(考虑对象集合或类似的集合)。

对此的详细解释涉及到汇编的核心。例如,为什么需要首先将对象复制到函数调用中?为什么地址的间接值不会比直接值花费更长的时间?等。

按引用传递和按值传递的区别是什么?

最新更新